2014-04-04 53 views
1

我有以下的JSON從Web服務:地圖JSON來的NSDictionary在Objective-C

[ 
    "{ 
     "count":2, 
     "offers":{ 
      "0":{ 
      "nodeID":"654321", 
      "publicationDate":"1396272408", 
      "title":"My first title", 
      "locations":"New York City" 
      }, 
      "1":{ 
      "nodeID":"123456", 
      "publicationDate":"1396272474", 
      "title":"My second title", 
      "locations":"San Diego" 
      } 
     }, 
     "error":"null", 
     "result":"success" 
    }" 
] 

我需要這個JSON映射到NSDictionary。我怎樣才能做到這一點?

我已經嘗試了以下

NSString *json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&localError]; 

但它只是讓我在這一個對象的字典。我需要訪問JSON的所有字段,如"count","offers"等。我該如何實現這一目標?

回答

1

您的JSON輸出不是字典而是數組。

NSString *json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
NSarray *parsedObject = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:&localError]; 

for(NSDictionary *dict in parsedObject) { 
    NSNumber *count = [dict objectForKey:@"count"]; 

} 

但提供節點只是奇怪,這將是一個更好的數組。

+0

感謝你的答案,它的工作正常,你說得對,看起來很奇怪,我會嘗試改變它 – Javiator

+0

這是真正有效的JSON,除了怪異的大括號嗎?封裝JSON對象的方括號看起來也很奇怪,不是嗎? – Javiator

+0

如果你只返回一個對象,那麼是的。在你的例子中,它看起來很奇怪,不需要。 – rckoenes

0

獲取這種形式的數據...您的JSON給出的」錯誤.....

[ 
     { 
      "count": 2, 
      "offers": 
      { 
      "0": { 
        "nodeID": "654321", 
        "publicationDate": "1396272408", 
        "title": "Myfirsttitle", 
        "locations": "NewYorkCity" 
       }, 
      "1": { 
        "nodeID": "123456", 
        "publicationDate": "1396272474", 
        "title": "Mysecondtitle", 
        "locations": "SanDiego" 
       } 
      }, 
      "error": "null", 
      "result": "success" 
     } 
    ] 

你得到的數據在陣列[在字典有字典....