我想将来自JSON对象的2个键值附加到我的iPhone应用程序列表中。下面是我的代码,
SBJsonParser *jsonParser = [[[SBJsonParser alloc] init] autorelease];
NSString *jsonString=[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://test/json/json_data.php"]];
id response = [jsonParser objectWithString:jsonString error:NULL];
NSDictionary *feed = (NSDictionary *)response;
list = (NSArray *)[feed valueForKey:@"fname"];
上面的代码正确显示了fname中的值,但如果我想为其添加lname,该怎么办?例如,我的对象是 [{ “FNAME”: “条例”, “L-NAME”: “琼斯”},{ “FNAME”: “约翰”, “L-NAME”: “雅各布”}] 我希望在列表中显示Bill Jones,John Jacobs等名称。目前它只显示Bill,John ..我尝试过像@“fname”@lname这样的东西,但它不会工作..任何人都可以帮助我..
答案 0 :(得分:1)
观察:来自JSON解析器的响应不是字典,而是给定您传入的字符串的数组。您的代码有效,因为-valueForKey:
是数组将响应的内容。该数组向每个元素发送-valueforKey:
并从响应中构建一个数组。
有两种方法可以做你想要的(至少)
明确地遍历数组
NSMutableArray* list = [[NSMutableArray alloc] init];
for (id anObject in response)
{
[list addObject: [NSString stringWithFormat: @"%@ %@",
[anObject objectForKey: @"fName"],
[anObject objectForKey: @"lname"]]];
}
向NSDictionary添加类别
@interface NSDictionary(FullName)
-(NSString*) fullName;
@end
@implementation NSDictionary(FullName)
-(NSString*) fullName
{
return [NSString stringWithFormat: @"%@ %@",
[self objectForKey: @"fName"],
[self objectForKey: @"lname"]];
}
@end
然后您现有的代码更改为
list = (NSArray *)[feed valueForKey:@"fullName"];