如何处理大 JSON 响应

Posted

技术标签:

【中文标题】如何处理大 JSON 响应【英文标题】:How to Handle Big JSON Response 【发布时间】:2011-11-09 19:26:51 【问题描述】:

我正在做一个简单的 iphone 应用程序,但是客户端向我发送了一个 1.6mb 的 JSON 文件,客户端不想在后端做任何事情,所以我需要一种有效的方法来处理这些数据,数据稍后将用于应用内部的过滤和搜索。

你认为最好的处理方法是什么?

更新

内存中的这个 JSON 大约 4.85mb,你们认为这对于 NSDictionary 来说是不是太大了。

【问题讨论】:

您打算将响应数据添加到 SqlLite 中,还是打算将其全部保存在您自己的结构中的内存中?如果将其保存在 SqlLite (CoreData) 中,则可以分块读取文件,随时将数据添加到 SqlLite。 核心数据不是 SQLite。 developer.apple.com/library/mac/#documentation/cocoa/conceptual/… 我的第一个想法是创建一个数据库,但我问这个问题是因为可能有人提出了更好的主意 如果您的应用使用过多内存(超过 10 MB),则应用的部分或全部可能会被关闭。你打算只解析这个文件一次吗?或者您是否会经常收到更新的 JSON 数据,以至于您期望需要经常解析它? Core Data 的优势在于您可以将 JSON 数据解析到本地存储中,然后只搜索您需要的结果。这会降低您应用的整体内存配置文件。 【参考方案1】:

将 JSON 数据解析为 Core Data store,使用哈希来确定记录是新记录还是存在且需要更新。在此步骤中使用线程将使应用程序更具响应性。然后,您可以在数据存储上有效地应用谓词(、过滤器和搜索)。

此外,还存在一些库/框架来处理 JSON 到核心数据的映射,例如 RestKit。但请记住,如果您不需要通用解决方案,您自己也很容易做到。

【讨论】:

使用核心数据而不是数据库的任何特殊原因? Core Data 免费提供了很多功能,您必须使用数据库引擎手动编写代码。例如,如果您的数据由关系构成,CD 会在您添加、编辑或删除数据对象的实例时为您管理这些关系。如果您在发布更新版本的应用程序时更改数据模型——例如,您的 JSON 数据突然包含新字段——Core Data 为客户提供了一种机制来升级他们的数据存储,以支持新模型,并且代码更少。

以上是关于如何处理大 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

chaiscript 如何处理大对象?

如何处理大维度表

如何处理大黄蜂表现不佳? [关闭]

如何处理大数据库?

如何处理大查询错误403:配额超出?

jquery isotope如何处理大数据集