[英]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.