gpt4 book ai didi

iphone - Objective-C DRY JSON 映射和对象创建

转载 作者:可可西里 更新时间:2023-11-01 03:38:55 25 4
gpt4 key购买 nike

我正在尝试将 JSON 信息动态映射到不同的对象中。但是我不太清楚如何控制整个指针的情况,因为我希望不会起作用。

到目前为止,我的方法是为每个对象创建一个字典,将变量指针映射到等效的 JSON 键。在我的 JSON 映射器中,我有一个方法 parseJSONFromDictionary:withObject 应该迭代 SBJSON 返回的字典的 JSONValue 并将适当的值分配给给定对象中的适当变量。

-(NSObject *)parseJSONFromDictionary:(NSDictionary *)dict withObject:(NSObject *)start{
for (NSString *key in dict) {
if ([[self.mappings objectForKey:key] isMemberOfClass:[NSString class]]) {
start.[self.mappings objectForKey:key] = [[dict valueForKey:key] stringValue];
}
}
return start;
}

mappings 是包含变量和 json 键的字典,dict 是从 json 解析器返回的内容。

最大的问题是我无法执行 start.[self.mappings objectForKey:key]。我对 C 不太了解,显然我对指针的了解还不够,那么我将如何创建这种系统呢?我知道这不是正确的方法,但正确的方法是什么?我知道这是可以做到的,因为 RestKit可以,但他们不支持 OAuth,所以很遗憾我不能使用他们可爱的框架。

我选择这条路线的原因是因为我正在使用的 API 目前处于 alpha 阶段。我希望能够轻松适应任何 future 的变化,而不必重写许多行代码。我也想开始 DRY-ly 编程。我知道 JSON 解析非常重复,我想找到一种方法来减少开销。

感谢所有帮助!


编辑: 看来我的问题有些困惑。我不需要解析 JSON 的帮助。我正在使用 SBJSON已经。我不需要提出请求的帮助,我已经在使用 JDG's OAuthConsumer framework .我只能使用支持 OAuth 2.0 的框架。

我确实需要帮助弄清楚如何防止这种情况:

-(Class1 *)parseJsonForClass1:(NSString *)inputString {
NSDictionary *outputDict = [inputString JSONValue];
Class1 *instance1 = [self mapObjectsForClass1From:outputDict];
return instance1;
}

-(Class2 *)parseJsonForClass2:(NSString *)inputString {
NSDictionary *outputDict = [inputString JSONValue];
Class2 *instance2 = [self mapObjectsForClass2From:outputDict];
return instance2;
}

-(Class3 *)parseJsonForClass3:(NSString *)inputString {
NSDictionary *outputDict = [inputString JSONValue];
Class2 *instance3 = [self mapObjectsForClass3From:outputDict];
return instance3;
}

-(Class1 *)mapObjectsForClass1From:(NSDictionary *)dict {
Class1 *object1 = [[Class1 alloc] init];
object1.name = [[dict valueForKey:@"name"] stringValue];
object1.date = [[dict valueForKey:@"date"] stringValue];
object1.objId = [[dict valueForKey:@"id"] intValue];

return object1;
}

-(Class2 *)mapObjectsForClass2From:(NSDictionary *)dict {
Class2 *object2 = [[Class2 alloc] init];
object2.something = [[dict valueForKey:@"something"] stringValue];
object2.title = [[dict valueForKey:@"title"] stringValue];
object2.imageUrl = [[dict valueForKey:@"image_url"] stringValue];

return object2;
}

-(Class3 *)mapObjectsForClass3From:(NSDictionary *)dict {
Class3 *object3 = [[Class3 alloc] init];
object3.foo = [[dict valueForKey:@"bar"] stringValue];
object3.flag = [[dict valueForKey:@"is_member"] boolValue];
object3.obj1 = [[Class1 alloc] init];
object3.obj1 = [self mapOjectsForClass1From:[dict objectForKey:@"name1"]];

return object3;
}

因此,如果您对如何将这些方法组合成一种方法有任何建议,请告诉我...

最佳答案

我知道这是一个旧话题,但我想把它放在这里,这里的代码在 https://github.com/mystcolor/JTObjectMapping 中将能够帮助对象映射。在使用它之前,您需要准备好映射和自定义对象。我在谷歌搜索上发现了这个……不过还没有用过。需要尝试一下。

关于iphone - Objective-C DRY JSON 映射和对象创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4964735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com