如何将node.js缓冲区转换为JavaScript对象而不需要中间字符串

9

我有一个包含UTF-8 JSON的Buffer实例。

通常你可以这样转换它:

const buffer = Buffer.from('{"a":1}')
const str = buffer.toString("utf-8")
const obj = JSON.parse(str)

为了让缓冲区(Buffer)和对象(Object)之间的转换更加高效,我如何在不使用中间字符串的情况下进行转换?

感兴趣。https://hackernoon.com/https-medium-com-amanhimself-converting-a-buffer-to-json-and-utf8-strings-in-nodejs-2150b1e3de57。 - deEr.
@AjAX。你提供的链接代码会创建一个中间字符串。我正在寻找一种避免任何中间字符串(或任何其他中间数据)的方法。 - Vasyl Boroviak
1个回答

13

JSON.parse可以接受Buffer实例。

const buffer = Buffer.from('{"a":1}')
const obj = JSON.parse(buffer)

这就是链接中所说的。 - deEr.
@AjAX。不是的。链接上没有这么说。 - Vasyl Boroviak
JSON.parse不接受Buffer:类型“Buffer”不能分配给类型“string”的参数 - Mick
1
这段代码:console.log(JSON.parse(Buffer.from('{"a":1}'))), 在Node.js v4或更高版本中输出为{ a: 1 }。看起来您正在使用TypeScript而不是JavaScript。 - Vasyl Boroviak
1
很不幸的是,在底层它仍然将缓冲区转换为字符串:https://dev59.com/qsDqa4cB1Zd3GeqPYjUU#66994351 - Elringus
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接