2014-02-18 107 views
1

我正在从服务器以下响应iOS来解析JSON?

[{"id":"16","name":"Bob","age":"37"},{"id":"17","name":"rob","age":"28"}]; 

我使用它AFNetworking框架,

我得到在NSData上述反应,然后用下面的代码,我能收集到在NSDictionary

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:&error]; 

但如何将数据解析从NSDictionary"name""age"价值?

+0

你也可以使用这种格式过于'[字典objectForKey:@“名”];' – Rugmangathan

回答

5

您预期的NSDictionary,但你的回答给你的字典数组,试试这个:

NSArray *array = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:&error]; 
for (NSDictionary *dict in array) 
{ 
    NSLog(@"Name: %@, age: %@", dict[@"name"], dict[@"age"]); 
} 

//扩展

从注释下,它看起来像你必须从响应,而不是NSArray的字符串正如你在上面的代码中显示的那样。 您可以解析字符串来得到你想要的数据,或者你可以将其转换回JSON和NSArray的:

NSString * jsonString = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:&error]; 
    NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
    NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
    //As I post above 

现在你应该有一个NSArray和我的代码应该做的工作。

+0

我已经试过,但与下面的错误消息 应用程序崩溃“[__NSCFString countByEnumeratingWithState:对象:伯爵:]” –

+0

这不是NSArray bcoz m试图使用计数功能.....但该应用程序崩溃 [__NSCFString计数]: 所以我认为它不是NSArray –

+0

这个错误说,它不是一个数组,但NSString对象。但是你显示的代码说清楚那是NSArray。你可以调用:id data = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:&error]; NSLog(@“CLASS:%@”,NSStringFromClass([data class]);并让我知道输出是什么 – Greg