gpt4 book ai didi

ios - iPad - 解析一个非常大的 json - 文件(50 到 100 mb 之间)

转载 作者:技术小花猫 更新时间:2023-10-29 10:22:44 27 4
gpt4 key购买 nike

我正在尝试在 iPad 上解析一个非常大的 json 文件。文件大小会在50到100mb之间变化(有一个初始文件,每个月都会有一组新的完整数据,这些数据将被下载、解析并保存到coredata中)

我正在为一家公司构建这个应用程序作为企业解决方案 - json 文件包含敏感的客户数据,它需要保存在 ipad 本地,这样它甚至可以离线工作。它在文件小于 20mb 时有效,但现在数据集变大了,我真的需要解析它。我在解析期间收到内存警告,在第三次警告后它就崩溃了。我有几个不同的核心数据实体,我只是设置来自 json 文件的所有值(当应用程序首次启动时),在完成所有操作后,我正在执行 [context save].

我希望有人能给我一些关于如何处理如此大的文件的建议。我正在考虑将 json 文件拆分为几个较小的 json 文件,并可能在多个线程中解析它们,但我不知道这是否是正确的方法。我想一个大问题是整个文件都保存在内存中——也许有某种方法可以将它“流”到内存或类似的东西中?

我正在使用 JSONKit ( https://github.com/johnezang/JSONKit ) 来解析文件,因为我读到它是最快的(也许有一个更慢的更容易内存?)。

提前致谢。

最佳答案

1) 将数据写入文件,然后使用 NSData 的 dataWithContentsOfFile:options:error: 并指定 NSDataReadingMappedAlwaysNSDataReadingUncached 标志。这将告诉系统使用 mmap() 来减少内存占用,而不是用内存块给文件系统缓存带来负担(这会使它变慢,但对 iOS 的负担要小得多)。

2) 您可以使用 YAJL SAX style JSON parser在解码时获取对象。

注意:我没有做2),但使用了1)中体现的技术。

3) 我最终自己也需要这样的东西,写了SAX-JSON-Parser-ForStreamingData可以绑定(bind)到任何异步下载器(包括我自己的)。

关于ios - iPad - 解析一个非常大的 json - 文件(50 到 100 mb 之间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com