如何在目标c中逐行解析JSON文件

Posted

技术标签:

【中文标题】如何在目标c中逐行解析JSON文件【英文标题】:How to parse a JSON file line by line in objective c 【发布时间】:2018-01-01 15:33:51 【问题描述】:

我正在处理非常大的 JSON 文件,因此我不想读取整个文件然后迭代和解析每个数据条目。 相反,我想迭代 JSON 文件本身(例如:逐行/一次一个对象)。 我考虑过将下一行位置作为当前行数据的一部分,因此 JSON 是一个半链表,但我没有设法从 JSON 文件中提取特定行。 我是否错过了一种更简单的方法来实现这一目标?甚至可以从 JSON 文件中提取和解析特定行吗?

非常感谢!

【问题讨论】:

你应该解释你想要归档的真正目标。出于多种原因,您想到的解决方案毫无意义。 我有一个非常大的 JSON 文件作为系统输入的情况,我希望解析它。但是,我不认为将所有大量数据保存在内存中是正确的方法。更改为另一种格式的可能性较小,因为 JSON 已很好地集成在系统中。 您只需要部分 JSON?如果没有,在内存中构建图表可能会导致更大的占用空间。 【参考方案1】:

JSON 不是面向行的格式,因此“逐行”解析的想法没有任何意义。

也就是说,我知道至少有一个用于 ios 的事件驱动 JSON 解析器,https://github.com/stig/json-framework。内置解析器 NSJSONSerialization 仅适用于整个文件。

【讨论】:

NSJSONSerialization 确实支持解析流。请参阅JSONObjectWithStream:options:error: 的文档。当然,结果仍然是一个巨大的对象模型。 虽然它确实支持解析流 - 在流关闭并且完整的 JSON 数据可用之前,它不会提供任何结果或答案。您不能一次只解析部分 JSON 元素。

以上是关于如何在目标c中逐行解析JSON文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 mmap 在 C 中逐行读取文件的最佳方法? [关闭]

在 C 中逐行浏览文本文件

Objective C - 创建文本文件以在 Cocoa 中逐行读取和写入

DELPHI中逐行读取并复制

C ++在循环中逐行写入文件或添加到数组并在循环后写入文件?

如何在 Julia 中逐行读取文件?