2015-03-03 16 views
-1

我有一個JSON文件看起來像這樣:在Objective C中將JSON文件轉換爲NSMutableDictionary?

{ 
    "data": 
    { 
     "level": [ 
      { 
      //bunch of stuff 
      } 
      ] 
    } 
} 

現在我想將其轉換成我可以訪問級別的陣列。如果我帶走{"data:一部分,那麼我可以用這個:

NSData *allLevelsData = [[NSData alloc] initWithContentsOfFile:fileLoc]; 
NSError *error = nil; 
NSMutableDictionary *allLevels = [NSJSONSerialization JSONObjectWithData:allLevelsData options:kNilOptions error:&error]; 
if(!error){ 
     NSMutableArray *level = allLevels[@"level"]; 
     for (NSMutableDictionary *aLevel in level){ 
      //do stuff with the level... 

但我必須有{"data:作爲文件的一部分,我無法弄清楚如何獲得NSData對象出來的現有的NSData對象。有任何想法嗎?

回答

0

您是否需要先將level NSArray從data NSDictionary中抽出?

NSData *allLevelsData = [[NSData alloc] initWithContentsOfFile:fileLoc]; 
NSError *error = nil; 
NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:allLevelsData options:kNilOptions error:&error]; 
if(!error){ 
    NSArray *levels = dataDictionary[@"data"][@"level"]; 
    for (NSDictionary *aLevel in levels){ 
     //do stuff with the level... 
0
  1. 你不會在默認情況下得到的可變對象回來,聲明變量作爲可變並不能讓他們如此。取而代之的是mutableCopy(假設你真的需要可變性)。
  2. 你爲什麼試圖提前修剪?如果你解碼原始的JSON,你將能夠從解碼字典中的數據字典中提取水平數組。

目前還不清楚你正在努力完成什麼,或者你爲什麼要走你所問的路徑。請注意,這不是必然意味着你的路徑是錯誤的,只是沒有一個更清楚地表明你真的想要完成什麼目標或你已經嘗試了嘗試(和錯誤/失敗,以及它如何失敗),你可能只會得到像這樣的模糊/一般的答案。

+0

我想我的基本問題是:我如何從json文件中獲得一個類似數組的數組(每個級別都是一個NSDictionary)?這是額外的json圖層「數據」,這讓我感到非常興奮。 – user688518 2015-03-03 00:55:30

+0

假設key「level」的值已經是一個基於您提供的JSON的數組,它似乎是。當你解碼這個JSON時,你將會得到一個至少有一個關鍵字爲「data」的條目的字典。如果你想一步一步來解碼JSON,你得到一個字典,把它叫做allDict。用allDict中的關鍵字「data」提取字典,將其稱爲dataDict。然後從dataDict中提取具有關鍵「級別」的數組。 – 2015-03-03 00:59:49

相關問題