2011-05-22 77 views
0

我是iphone和json世界的新手。我有这个JSON结构。你可以在这里把它看得很清楚http://jsonviewer.stack.hu/解析json的麻烦

{"@uri":"http://localhost:8080/RESTful/resources/prom/","promotion":[{"@uri":"http://localhost:8080/RESTful/resources/prom/1/","descrip":"description 
here","keyid":"1","name":"The first 
name bla bla 
","url":"http://localhost/10.png"},{"@uri":"http://localhost:8080/RESTful/resources/promo/2/","descrip":"description 
here","keyid":"2","name":"hello","url":"http://localhost/11.png"}]} 

我想用json-framework解析它。我试过这个

NSDictionary *json = [myJSON JSONValue]; 
      NSDictionary *promotionDic = [json objectForKey:@"promotion"]; 
      NSLog(@" res %@ : ",[promotionDic objectAtIndex:0]); 

但是怎么做才能得到例子,索引0的对象的名字?我想我应该把对象放在NSArray中?但我不知道如何:/和我不对象的数量是可变的。请帮助 。

回答

0

的JSON说:

..."promotion":[{"@u... 

那“[”就意味着“提升”是键入数组而不是字典。

所以真的是你的代码应该是:

NSDictionary *json = [myJSON JSONValue]; 
NSArray *promotions = [json objectForKey:@"promotion"]; 
NSLog(@"res: %@",[promotions objectAtIndex:0]); 
+0

谢谢你,它的工作:) – user761812 2011-05-22 19:13:12

2

首先,您加载JSON

 NSLog(@" json %@ : ",[json description]); 

,会告诉你,你有什么后,您需要此行。

其次,你不能在字典上调用objectAtIndex:。如果它有效,那是因为promotionDict实际上是一个NSArray。 (NSLog会告诉你)。在Objective-C中,你可以指定任何类型的指针,这对新开发人员来说是混淆的,但是是语言的一部分,而且是一个特性。

有了一个NSArray你可以要求的东西在它的数量,[myArray的数],等你需要指挥双击XCode中开拓,为的NSDictionary的文档等