6

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

如何解析这些数据?

4

4 回答 4

3

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

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

抱歉,我不知道有任何代码示例可以在实践中演示这种用法。

于 2011-09-08T04:58:38.533 回答
3

最简单的解决方案是减少您从服务器获得的 json 大小。如果你不能这样做,解析巨大 JSON 的唯一方法是使用惰性求值。

我认为没有支持惰性评估的objective-c 的JSON 库。但是你可以实现一个。

于 2011-09-02T14:57:33.360 回答
2

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

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

于 2012-09-07T13:41:32.943 回答
1

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

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

于 2011-09-07T12:50:59.760 回答