使用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"];