在iOS中解析json数据

在iOS中解析json数据,ios,json,api,parsing,Ios,Json,Api,Parsing,我知道这是一个常见的问题,但我一直坚持使用is API 如何解析此API中的数据: 它包含20个对象,每个对象中还有3个其他对象,分别称为“图像”、“日期”和“标题” 如何在ios中的NSMUtableArray中存储所有“日期”值 我这样做: NSString *urlStr = [NSString stringWithFormat:@"http://dl.bahramradan.com/api/1/get/ig"]; NSURL *url = [NSURL URLWithSt

我知道这是一个常见的问题,但我一直坚持使用is API

如何解析此API中的数据:

它包含20个对象,每个对象中还有3个其他对象,分别称为“图像”、“日期”和“标题”

如何在ios中的NSMUtableArray中存储所有“日期”值

我这样做:

    NSString *urlStr = [NSString stringWithFormat:@"http://dl.bahramradan.com/api/1/get/ig"];
    NSURL *url = [NSURL URLWithString:urlStr];
    NSData *json = [NSData dataWithContentsOfURL:url];
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:json options:0 error:NULL];

    NSArray *dateArray = [dict objectForKey:@"date"];

但是当我运行我的应用程序时,它在最后一行崩溃了,怎么了?

我没有检查你的JSON是否有效。但是你的代码中有一个明显的错误:如果JSON由20个对象组成,我假设这些对象包含在一个数组中,而不是一个dict中

所以首先要改变的是

NSArray *array = [NSJSONSerialization JSONObjectWithData:json options:0 error:NULL];
然后,您希望提取所有项目的“日期”值,并将它们组合到另一个数组中。 实现这一点的最简单方法是使用KVC收集操作符

NSArray *dateArray = [array valueForKeyPath:@"@unionOfObjects.date"];
因此,“@unionOfObjects.date”所做的是:遍历数组中的所有对象,查找它们的每个“date”值,并将它们组合到返回的数组中。

你的JSON结构:一个
NSDictionary
NSArray
。想想这个结构。还有,`“当我tun我的应用程序时,它崩溃了,怎么了“这是一个刻板的坏问题。您没有提供任何有用的信息,说明什么可能导致崩溃。您需要使用调试器并尝试自己解决错误。您是否调试了已解析词典的内容?@Thanh NhonNGUYEN是的,我猜它可以安全地转换为NSArray,但在实际操作中,它会崩溃。请访问json.org并学习json语法。只需要5-10分钟。(你拥有的是一个由“对象”组成的“数组”。)然后要明白,如果你试图修改一个示例来进行JSON解析,那么你可能注定要失败——你需要真正理解语法并理解它如何映射到iOS对象(数组->NSArray,对象->NSDictionary)。接下来,在调试过程中,始终在每个步骤中包含解析JSON的NSLog,了解NSArray转储周围的
()
字符,NSDictionary转储周围的
{}
字符。谢谢!我在理解json语法时遇到了一个大问题,那是因为我使用了dict!:)