在两个(或更多)缓冲块之间分裂的大型JSON的最佳方法是什么?



想象一下,您的情况基本上是这样:

{"name": "...", /*...*/, "data": "..."}

JSON实际上很大。另外,该JSON在Node.js缓冲区块中传递给我。而且由于JSON很大,有两个块,第一个包含name,第二个包含data

块看起来像这样:

{"name": "...", /*...*/, "da //chunk1
ta": "..."} //chunk2

我需要基于name修改data。做什么的最好做法是什么?

我遇到的问题是,由于明显的原因(包括内存消耗),我无法JSON.parse。那么,如果没有JSON.parse,我该如何处理这种情况?我是否必须写自己的解析器才能检测到data在哪里开始和结束?

您的选项相当有限:

  1. 串联缓冲区,解析JSON,然后使用所得的对象树(内存影响和所有)。

  2. 使用(或构建)流媒体解析器。例如,双向js(无隶属关系)被描述为:

    opoe.js是一个开源的JavaScript库,用于使用流媒体加载JSON,将DOM的便利性与SAX的速度和流动性结合在一起。

    它可以将任何json作为流解析,足够小,可以成为微型图书馆,没有依赖性,并且不在乎您需要哪些其他库。

    我们可以加载比可用内存更大的树木。或者,我们可以从JSON实例化经典的OOP模型,或者在阅读时完全改变您的JSON。

    我发现使用搜索" node stream json parser";这个问题是第二次命中,并有一个指向双簧管的答案。

最新更新