2015-06-27 21 views
0

我有一個非常複雜的JSON數據。我試圖用客觀的c編程進行解析。 JSON數據如下所示(在這裏,我介紹的簡單格式來解釋,但它有非常深的練級。):轉換JSON並使用目標C構建字典

{ 
    "university": "CUNY", 
    "results": { 
     "Engineering": 200, 
     "Computer Science": 298, 
     "Life Science": 28 
    } 
} 

使用NSJSONSerialization,我試圖解決這個問題,我使用下面的代碼:

NSDictionary *parsedObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; 
[parsedObject objectForKey:@"results"]; 

並得出結果。但我需要一個像myResultDict這樣的字典,將從results中生成,以便我可以實現其他功能。

任何人都可以給我一個小提示如何做到這一點?

+0

你的第二個線檢索結果的字典,但不會用它做任何事情。你需要將該表達式的結果賦值給一個'NSDictionary *'類型的變量。' – Paulw11

+0

明白! NSDictionary * = parsedObject objectForKey:@「results」]; :) –

+0

此外,對於可能容易出錯的情況,請不要錯過捕獲和報告錯誤的機會(即檢查'parsedObject!= nil',然後報告錯誤(您已設置爲NULL)。 – Droppy

回答

1

當您通過使用NSJSONSerialization得到解析數據時,它會爲您提供具有多個鍵值對的解析字典。

然後通過獲取結果鍵你可以得到你的結果字典。

例如:

NSDictionary *myResultDict = [parsedDictionary objectForKey:@"results"]; 
+1

注意:使用'objectForKey'而不是'valueForKey'。 – Droppy

1

試試這個方法:

NSDictionary *dic = @{@"university": @"CUNY", @"results" : @{@"Engineering": @200, @"Computer Science": @298, @"Life Science": @28}}; 

[self getSubDictionaryWithDictionary:dic]; 

此方法僅如果要處理NSArray那種類的,裏面記錄了NSDictionary值,達到你..: )

- (void)getSubDictionaryWithDictionary:(NSDictionary *)dictionary 
{ 
    for (id key in [dictionary allKeys]) 
    { 
     id object = [dictionary objectForKey:key]; 

     NSLog(@"key:%@ value:%@",key, object); 

     if ([object isKindOfClass:[NSDictionary class]]) 
     { 
      [self getSubDictionaryWithDictionary:object]; 
     } 
    } 
} 

這樣就提取了嵌套字典中的所有字典進制,你可以修改它,需要你根據什麼.. :)

希望這是有幫助的..乾杯.. :)