2011-05-22 113 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的文檔等