使用Asihttprequest和iPhone的Json框架parsingJSON数据
我一直在学习如何使用JSON框架和iOS的ASIHTTPRequestparsingJSON。 我已经通过社区教程testing了使用twitter feed以及定制feed。 一切进展顺利。
然后我想我会testing使用Microsoft Odata服务Northwind分贝。 你可以在这里查看json的结果:
http://jsonviewer.stack.hu/#http://services.odata.org/Northwind/Northwind.svc/Products%281%29?$format=json
现在我正在努力研究如何parsing产品名称。 任何人都可以指向正确的方向吗?
在我的要求已完成,我有这样的 :
- (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
根据你提供的链接 ,你的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"];