首页 > 解决方案 > 为什么我的 JSON 变量的值有“类型”和“数据”?

问题描述

出于某种原因,在对我的对象执行 JSON.stringify() 到文件中之后,我的参数之一没有分配字符串值,而是具有“类型”和“数据”。

代码:

fs.writeFileSync('myjson.json', JSON.stringify(myjsonobj, null, 4));

预期的:

{
  "my-field": "D21"
}

我得到的是:

{
  "my-field": {
    "type": "Buffer",
    "data": [
      68,
      50
      49
    ]
  }
}

“数据”下的值似乎是字符串中每个字符的十进制值。

那么,为什么我有数据呢?

谢谢

标签: javascriptnode.jsjson

解决方案


这是因为您设置my-field的任何值都是Buffer,而不是字符串。很容易纠正;您需要做的就是.toString()在设置时调用 Buffer my-field。像这样:

const myData = {
    'my-field': MyBufferVariable.toString()
};

return JSON.stringify(myData);

推荐阅读