簡體   English   中英

如何在字典中的數組內部解析字典

[英]how to parse a dictionary inside an array, which is in a dictionary

在我的JSON響應中,我接收到一個字典,該字典具有一個數組,在該數組內是一個字典,該字典中沒有幾個鍵值,為了簡化起見,這里是JSON響應:

    {
    weather = (
            {
        description = haze;
        icon = 50n;
        id = 721;
        main = Haze;
        }
      );
    }

我想知道如何檢索元素說明,圖標,ID和主要元素。 假設我有一個稱為str的NSString,如何將description的值添加到此字符串中。 我嘗試了許多不同的方法,但似乎都沒有效果。 我認為應該起作用的一個,但不是:

str = [[[dir valueForKey:@"weather"] objectAtIndex:0] valueForKey:@"description"];

有人可以讓我知道如何訪問這四個值。 我不想創建這些值的新數組然后檢索它們。 問候。

使用NSJSONSerialization將您的JSON數據轉換為NSObjects。

然后,您需要根據對象的結構索引它們。

如果結構是固定的,並且可以保證,則可以使用固定的索引/鍵:

//data in theJSONDict.

NSArray *outerArray = theJSONDict[@"weather"];
NSDictionary *firstWeatherItem = outerArray[0];
NSString *firstItemDesc = firstWeatherItem[@"description"];

您還可以在1行中完成所有操作:

firstItemDesc = theJSONDict[@"weather"][0][@"description"];

但這很難調試。

如果這是來自服務器的JSON數據,則您需要進行更多的防御性編碼,並編寫代碼以嘗試從字典中獲取鍵,測試是否為nil,然后使用對象計數或測試循環遍歷數組。盲目索引到數組之前的數組長度。 否則,如果輸入數據的格式與您的假設不符,您可能會崩潰。

(順便說一句,請勿為此使用valueForKey 。這是KVO代碼,盡管通常可以使用,但與使用NSArray和NSDictionary方法來獲取數據並不相同,有時不能正常使用。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM