在我的 JSON 响应中,我收到一个字典,它有一个数组,在该数组中是一个具有很少键值的字典,为了简单理解这里是 JSON 响应:
{
weather = (
{
description = haze;
icon = 50n;
id = 721;
main = Haze;
}
);
}
我想知道如何检索元素描述、图标、id 和 main。假设我有一个名为 str 的 NSString,我如何将描述的值添加到这个字符串中。我尝试过很多不同的东西,但似乎都不起作用。我认为应该起作用但没有起作用的是:
str = [[[dir valueForKey:@"weather"] objectAtIndex:0] valueForKey:@"description"];
谁能告诉我如何访问这 4 个值。我不想创建这些值的新数组然后检索它们。问候。
最佳答案
使用 NSJSONSerialization
将您的 JSON 数据转换为 NSObject。
然后您需要根据对象的结构对对象进行索引。
如果结构是固定的,并且有保证,你可以用固定的索引/键来做:
//data in theJSONDict.
NSArray *outerArray = theJSONDict[@"weather"];
NSDictionary *firstWeatherItem = outerArray[0];
NSString *firstItemDesc = firstWeatherItem[@"description"];
您也可以在一行中完成所有操作:
firstItemDesc = theJSONDict[@"weather"][0][@"description"];
但这更难调试。
如果这是来自服务器的 JSON 数据,您需要比上面的代码更具防御性,并编写尝试从字典中获取键的代码,测试 nil,或者使用对象的计数循环遍历数组,或者在盲目索引之前测试数组的长度。否则,如果您的输入数据格式与您的假设不符,您可能会崩溃。
(顺便说一句,不要为此使用 valueForKey
。那是 KVO
代码,虽然它通常有效,但它并不相同因为使用 NSArray 和 NSDictionary 方法来获取数据,有时无法正常工作。)
关于ios - 如何解析数组中的字典,该数组位于字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35361957/