繁体   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