我从Web服务获取了一个大的JSON字符串(11MB)。当我使用JSONKit解析数据时,我的应用程序达到70MB,我收到内存警告,应用程序崩溃。
我如何解析这些数据?
答案 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)的转换,反之亦然。