将 node.js 缓冲区转换为字符串,然后再转换为 JSON

Convert a node.js buffer to string and then to JSON

我有一个 node.js 读取流,它发出一个缓冲区并使用 toString() 函数将缓冲区转换为字符串,然后当我尝试通过 [=43 将字符串转换为 JSON =]() 函数抛出解析错误。

是否有将缓冲区转换为字符串然后将该字符串转换为 JSON 的最佳方法?

JSON 字符串如下所示,

[{"data1":1487328824948,"encrypt":假,"version":“1.0.0”,"data2":"value2","data3": "value3", "data4": "value4", "data5": "value5"},{"data1": 148732882448, "encrypt": 错误, "version": "1.0.0", "data2": "value2", "data3": "value3", "data4": "value4", "data5": "value5"}.........]

这似乎是正确的方法,但在您调用 JSON.parse() 之前,您的读取流似乎没有完成读取输入。因此 JSON.parse() 调用仅解析部分 JSON 字符串,然后出现错误。

尝试确保 read() 完成 - 使用 readSync()?

var buf = Buffer.from(JSON.stringify(obj));
var temp = JSON.parse(buf.toString());

我能够使用 JSONStream 包解析传入的流。 https://github.com/dominictarr/JSONStream,在这个用例中确实帮助了我,一个很好用的工具。

相关 Whosebug post - Parse large JSON file in Nodejs