You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中JSON.parse解析Buffer JSON为何不生成Buffer实例?是否正常?

是的,这是JSON.parse的正常预期行为

JSON本身没有定义Buffer这种二进制类型,它只支持字符串、数字、布尔值、null、对象和数组这些基础类型。所以JSON.parse处理Buffer的JSON字符串时,只会把它解析成一个普通的JavaScript对象——也就是包含type和data属性的对象,而不会自动转换成Node.js的Buffer实例。

看你提供的代码示例:

let parseBuf = JSON.parse('{"type":"Buffer","data":[146,247,204,173,154,172,70,6,147,130,219,222,4,69,161,74]}');
let bufferBuf = Buffer.from(parseBuf.data);

console.log(parseBuf instanceof Buffer)
console.log(bufferBuf instanceof Buffer)

console.log(JSON.stringify(parseBuf))
console.log(JSON.stringify(bufferBuf))

对应的控制台输出:

false
true
{"type":"Buffer","data":[146,247,204,173,154,172,70,6,147,130,219,222,4,69,161,74]}
{"type":"Buffer","data":[146,247,204,173,154,172,70,6,147,130,219,222,4,69,161,74]}

这里的逻辑很清楚:

  • parseBuf是JSON.parse生成的普通对象,所以instanceof Buffer返回false
  • 调用Buffer.from(parseBuf.data)把数组转成Buffer实例,所以bufferBuf instanceof Buffer返回true
  • 而JSON.stringify处理Buffer时,Node.js会自动把它序列化成{type: "Buffer", data: [...]}格式的对象,所以两次输出的JSON字符串完全一致

如果要把这种JSON字符串转回Buffer,除了用Buffer.from(parseBuf.data),还可以直接传入整个解析后的对象:Buffer.from(parseBuf),Node.js会识别这种格式的对象并正确转换成Buffer实例。

内容的提问来源于stack exchange,提问作者Beraben Systems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:07:06