在iOS中解析大量JSON数据

时间:2011-09-02 14:26:07

标签: iphone ios4 sbjson

我从Web服务获取了一个大的JSON字符串(11MB)。当我使用JSONKit解析数据时,我的应用程序达到70MB,我收到内存警告,应用程序崩溃。

我如何解析这些数据?

4 个答案:

答案 0 :(得分:3)

最简单的解决方案是减少从服务器获取的json大小。如果你不能解决它,解析巨大JSON的唯一方法是使用延迟评估。

我不认为Objective-c有一个支持延迟评估的JSON库。但是你可以实现一个。

答案 1 :(得分:3)

最好的办法是查看支持事件驱动解析的YAJL JSON解析器。然后,您可以在数据源中解析JSON,而不必立即将整个内容存储在内存中。

https://github.com/gabriel/yajl-objc

抱歉,我不知道在实践中证明这种用法的任何代码示例。

答案 2 :(得分:2)

SBJson支持解析数据流。这使您可以一点一点地处理文档,因此您无需保留整个文档。该发行版包含两个如何使用它的示例。首先是StreamParserIntegrationTest.m,然后是TweetStream演示应用程序:一个Twitter应用程序,它将整天坐下来解析HTTP流(如果你愿意的话),当它们进来时显示每条推文,然后抛出它们程。

免责声明:我是SBJson的作者。)

答案 3 :(得分:1)

11 MB是一个大数据,解决方案只是为了最小化您的数据大小 JSON支持不是iOS的原生支持,但是有一个很好的框架用于这个目的:http://code.google.com/p/json-framework/

此框架支持从原始JSON对象到Objective-C对象(NSArray,NSDictionary)的转换,反之亦然。