繁体   English   中英

JSON.stringify 返回不同的值,然后是 console.log

[英]JSON.stringify returning different values then a console.log

我正在尝试在 nodejs 中写入文件,但遇到了一个问题,我没有找到任何在线解决方案。

economy.people[member.id] = 0
fs.writeFile("./economy.json", JSON.stringify(economy, null, 2), (err) => {
  if (err) throw err;
  console.log(economy)
  console.log(JSON.stringify(economy, null, 2))   
  console.log('The file has been saved!');
})

运行此代码时,将返回以下内容:

{ government: 1000, banks: [], people: [ '517854168229216256': 0 ] }
{
  "government": 1000,
  "banks": [],
  "people": []
}
The file has been saved!

我想知道为什么JSON.stringify()返回与console.log()不同的东西,我可以做些什么来解决这个问题,使它们相同,并返回相同的值。

看起来economy.people是一个数组,而不是 object。 将属性'517854168229216256'设置为 0 实际上不会将该项目添加到数组中,因此JSON.stringify忽略它。

但是,Javascript 中的 arrays 是 object 的一种类型,您可以在 ZA8CFDE6331BD49EB2AC96F891 上设置任何属性 console.log将打印出这些属性,这就是为什么您在记录时看到该属性,但在字符串化时看不到的原因。 将人员更改为 object 而不是数组应该会给您预期的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM