我该如何解析json响应

时间:2012-08-08 08:43:03

标签: iphone ios ios4

这是json响应我该如何解析呢?

[     {      “ID”: “35”,      “名”: “Jalsa”     }  ]

[     {      “ID”: “32”,      “名”: “Nandhini”     } ]

3 个答案:

答案 0 :(得分:3)

苹果有一类叫做

  

NSJSONSerialization

您可以使用以下方法来解析您的json数据

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error

有关更多信息,请参阅apple doc:http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html

编辑:

我不知道你如何提出请求,例如。 NSURLConnection的

假设您已在

中填写了_recievedData
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

方法

你可以像这样得到你的阵列

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
   NSArray *recivedArray = [NSJSONSerialization JSONObjectWithData:_receivedData options:0 error:nil];
}

如果您需要有关如何接收数据的更多帮助,可以在此处找到示例https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

答案 1 :(得分:1)

当表达式在“[”“]”之间时,我们使用 NSArray 当表达式位于“{”“}”

内时,我们使用 NSDictionary

在我们的例子中,json是一个包含2个词典的数组。每个字典包含2个键值对。

 NSError *e = nil;
 NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData: data options: 
 NSJSONReadingMutableContainers error: &e];
 if (e!=nil) {
     // Handle error
     return;
 }
 for (NSDictionary *dict in jsonArray)
 {        
     NSString *theID = [dict objectForKey:@"id"];
     NSLog(@"ID:%@" , theID);

     NSString *name = [dict objectForKey:@"name"];
     NSLog(@"Name: %@" , name);
 }

答案 2 :(得分:0)

如果您需要支持iOS 4.x,可以使用JSONKit,因为NSJSONSerialization仅在iOS 5.x之后可用。

JSONKit也有很棒的表现。检查GitHub项目页面上的比较。