如何处理大型JSON响应

4
我正在开发一款简单的 iPhone 应用程序,但客户给我发送了一个 1.6MB 的 JSON 文件。客户不想在后端进行任何操作,因此我需要一种高效的方式来处理这些数据,这些数据将在应用程序中用于过滤和搜索。您认为最好的处理方式是什么?
更新:这个 JSON 在内存中占用大约 4.85MB,你们认为对于 NSDictionary 来说这太多了吗?

1
你打算将响应数据添加到SqlLite中,还是计划将其全部保存在内存中的自己的结构中?如果你将其保存在SqlLite(CoreData)中,那么你可以分块读取文件,并在读取时将数据添加到SqlLite中。 - Sam
1
Core Data 不是 SQLite。http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/cdprogrammingguide.html - Alex Reynolds
我的第一个想法是创建一个数据库,但我提出这个问题是因为可能有人会有更好的主意。 - Ecarrion
1
如果您的应用程序使用了太多内存,超过10 MB,那么应用程序的部分或全部更有可能被关闭。您计划只解析此文件一次吗?还是您会经常收到更新的JSON数据,以至于您需要频繁解析它?Core Data的优点在于您可以将JSON数据解析为本地存储,然后仅搜索您需要的结果。这降低了您的应用程序的总体内存占用率。 - Alex Reynolds
1个回答

7
将JSON数据解析到Core Data存储中,使用哈希值确定记录是否为新记录或已存在并需要更新。在此步骤中使用线程将使应用程序更具响应性。然后可以有效地对数据存储应用谓词(,过滤和搜索)。

此外,一些处理JSON到Core Data映射的库/框架存在,例如RestKit。但请记住,如果您不需要通用解决方案,则自己完成也非常容易。


使用核心数据而不是数据库有什么特殊原因吗? - Ecarrion
3
Core Data 提供了很多免费的功能,这些功能需要在数据库引擎中手动编码才能实现。例如,如果您的数据包含关系,CD会在您添加、编辑或删除数据对象实例时为您管理这些关系。如果您在发布应用程序的新版本时更改数据模型,例如 JSON 数据突然包含新字段,Core Data 提供了一种机制,使客户端可以使用更少的代码升级他们的数据存储以支持新模型。 - Alex Reynolds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接