我一直在学习如何使用 JSON 框架和适用于 iOS 的 ASIHTTPRequest 来解析 JSON。我已经通过社区教程使用 Twitter 提要和自定义提要进行了测试。一切顺利。
然后我想我将使用 Microsoft Odata Service for Northwind db 进行测试。您可以在此处查看 json 结果:
现在我一直在努力研究如何只解析产品名称。谁能指出我正确的方向?
应我的要求完成我有这个:
- (void)requestFinished:(ASIHTTPRequest *)request
{
[MBProgressHUD hideHUDForView:self.view animated:YES];
NSString *responseString = [request responseString];
NSDictionary *responseDict = [responseString JSONValue];
//find key in dictionary
NSArray *keys = [responseDict allKeys];
NSString *productName = [responseDict valueForKey:@"ProductName"];
NSLog(@"%@",productName);
}
在日志中我有空。
如果我将 valueforKey 更改为 @"d"
,我将获得整个有效负载,但我只需要 productName。
我使用的服务 URL 是:
http://servers.odata.org/Northwind/Northwind.svc/Products(1)?$format=json
最佳答案
根据 the link you have provided ,您的 JSON 具有以下格式:
{
"d": {
...
"ProductName": "Chai",
...
}
}
在顶层,您只有一个键:"d"
。如果你这样做:
NSString *productName = [responseDict valueForKey:@"ProductName"];
它将返回nil
。您需要深入了解层次结构:
NSDictionary *d = [responseDict valueForKey:@"d"];
NSString *productName = [d valueForKey:@"ProductName"];
或者简单地说:
NSString *productName = [responseDict valueForKeyPath:@"d.ProductName"];
关于iphone - 使用 Asihttprequest 和 iphone 的 Json 框架解析 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6974004/