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

时间:2017-12-21 04:41:30

标签: javascript node.js stream buffer

我有一个node.js readstream,它发出缓冲区并使用toString()函数我将缓冲区转换为字符串,之后当我尝试通过JSON.parse()函数将字符串转换为JSON时,它会抛出解析错误。

有没有最好的方法将缓冲区转换为字符串,然后将该字符串转换为JSON?

JSON String如下所示,

[{" data1":1487328824948,"加密":false,"版本":" 1.0.0",&#34 ; data2":" value2"," data3":" value3"," data4":" value4" ," data5":" value5"},{" data1":148732882448,"加密":false,"版本&#34 ;:" 1.0.0"," data2":" value2"," data3":" value3",& #34; data4":" value4"," data5":" value5"} .........]

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

相关的StackOverflow帖子 - Parse large JSON file in Nodejs