【发布时间】:2015-11-12 16:40:12
【问题描述】:
我有一个非常长的对象数组,大小约为 100,000 个项目,就在我将其写入文件之前,我将数据传递到 JSON.stringify
我收到此错误:
JSON.stringify(
^
RangeError: Invalid string length
我怎样才能成功地对一个非常大的 json 对象进行字符串化?
更新:
自从我最初写这个问题以来,我对处理大量数据变得更加熟悉,并且我更喜欢在这个过程中使用 Apache Spark。在 Spark 中,习惯上不使用大型 JSON 数组,而是使用包含长 JSON 字符串的流或文件,每行一个对象。文件如下所示:
{"name":"kristian", "favoriteSong":"enter sandman"}
{"name":"joshua", "favoriteSong":"penny lane"}
{"name":"susan", "favoriteSong":"all about that bass"}
这很好,因为:
- 您可以任意处理 TB 大的文件,也可以轻松地进行一些无逻辑的文件拆分并将其变成一千个更小的文件,逻辑是在某个换行符编号 N 处简单地中断文件。李>
- 这样您就不会遇到由未关闭的 JSON 数组引起的数据文件损坏的潜在可怕问题。
- 文件中的大型 JSON 数组往往没有换行符,因此在 VIM 或其他编辑器中打开大文件很麻烦,因为它试图将整个内容加载到内存中,而不是带有换行符的文件,它可以轻松地将前 10 行左右加载到屏幕上而不会出现问题。
【问题讨论】:
-
呃,创建 org obj 的两个独立对象,将每个对象字符串化,然后将结果连接在一起。