将 node.js 缓冲区转换为字符串,然后转换为 JSON
Posted
技术标签:
【中文标题】将 node.js 缓冲区转换为字符串,然后转换为 JSON【英文标题】:Convert a node.js buffer to string and then to JSON 【发布时间】:2018-06-03 17:20:07 【问题描述】:我有一个 node.js 读取流,它发出一个缓冲区并使用 toString() 函数将缓冲区转换为字符串,然后当我尝试通过 JSON.parse() 函数将字符串转换为 JSON 时,它会引发解析错误。
有没有最好的方法将缓冲区转换为字符串,然后将该字符串转换为 JSON?
JSON 字符串如下所示,
[“data1”:1487328824948,“加密”:false,“版本”:“1.0.0”,“data2”:“value2”,“data3”:“value3”,“data4”:“value4” ,“data5”:“value5”,“data1”:148732882448,“加密”:false,“版本”:“1.0.0”,“data2”:“value2”,“data3”:“value3”,“ data4": "value4", "data5": "value5"......]
【问题讨论】:
能否请您发布由 toString() 转换的字符串 @shivshankar 我添加了字符串 【参考方案1】:var buf = Buffer.from(JSON.stringify(obj));
var temp = JSON.parse(buf.toString());
【讨论】:
【参考方案2】:我能够使用 JSONStream 包解析传入的流。 https://github.com/dominictarr/JSONStream,在这个用例中真的帮助了我,一个很好用的工具。
相关 *** 帖子 - Parse large JSON file in Nodejs
【讨论】:
【参考方案3】:这似乎是正确的方法,但在调用 JSON.parse() 之前,您的 readstream 似乎没有完成读取输入。因此 JSON.parse() 调用仅解析部分 JSON 字符串,然后您会收到错误消息。
尝试确保 read() 完成 - 使用 readSync()?
【讨论】:
我在这里处理的读取流来自一个 tar.gz 文件,当数据到来时,它会在我做的 .on('data') 侦听器中连续流式传输 JSON 格式的字符串缓冲区到字符串的转换,然后通过 JSON.parse 将其转换为对象,这样我就可以开始解析它了。不确定 readSync 是否在这里提供帮助,并且由于 tar.gz 的大小非常大,也可能会减慢进程。 我添加了我正在处理的 JSON 字符串,类似于我发布的那个,它不断从 tar.gz 中出来以上是关于将 node.js 缓冲区转换为字符串,然后转换为 JSON的主要内容,如果未能解决你的问题,请参考以下文章
将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组
将 c++ 双缓冲区传递给 Node Js(直接)[Node JS : V8 c++ : Nan]