想象一下,您的情况基本上是这样:
{"name": "...", /*...*/, "data": "..."}
JSON实际上很大。另外,该JSON在Node.js缓冲区块中传递给我。而且由于JSON很大,有两个块,第一个包含name
,第二个包含data
。
块看起来像这样:
{"name": "...", /*...*/, "da //chunk1
ta": "..."} //chunk2
我需要基于name
修改data
。做什么的最好做法是什么?
我遇到的问题是,由于明显的原因(包括内存消耗),我无法JSON.parse
。那么,如果没有JSON.parse
,我该如何处理这种情况?我是否必须写自己的解析器才能检测到data
在哪里开始和结束?
您的选项相当有限:
-
串联缓冲区,解析JSON,然后使用所得的对象树(内存影响和所有)。
-
使用(或构建)流媒体解析器。例如,双向js(无隶属关系)被描述为:
opoe.js是一个开源的JavaScript库,用于使用流媒体加载JSON,将DOM的便利性与SAX的速度和流动性结合在一起。
它可以将任何json作为流解析,足够小,可以成为微型图书馆,没有依赖性,并且不在乎您需要哪些其他库。
我们可以加载比可用内存更大的树木。或者,我们可以从JSON实例化经典的OOP模型,或者在阅读时完全改变您的JSON。
我发现使用搜索" node stream json parser";这个问题是第二次命中,并有一个指向双簧管的答案。