在 NodeJS 中使用 JSON.stringify 时出现问题
Problem when using JSON.stringify in NodeJS
我最近尝试使用 fs 修改特定目录中的 JSON 文件。这很好用,我只是用
let randomJsonObject = JSON.parse(fs.readFileSync("./file.json", "utf8")); //Should read [] at first because there's nothing written inside this file except []
当我尝试修改它时,问题就出现了。我想检查一个特定的数组(这里称为“某物”)是否已经存在,如果不存在,它应该在其中放入一些值。所以我尝试使用
if(!randomJsonObject["something"]) {
randomJsonObject["something"] = [{"name": "asd", "phone": 0}, {"name": "asd222", "phone":234}];
}
问题是,当我记录 JSON 对象时,它工作正常,但如果我尝试记录 JSON.stringify(randomJsonObject),它只会记录 [],这是我在开始时什么都没有,它只是被解析...
console.log(randomJsonObject); //Logs correct JSON Array, with 2 Objects inside it
console.log(JSON.stringify(randomJsonObject)); //Logs [] and nothing else
有谁知道为什么会这样?显然,如果我尝试将它保存到我的文件中,那么它只会再次保存 [] ...缓存有问题吗?还有别的吗?感谢帮助 :) 另外,我对使用 JSON 还很陌生,尤其是在 JavaScript 中,所以也许它真的很简单,但我只是看不到它 ^^
fs.writeFile("./file.json", JSON.stringify(randomJsonObject), (err) => {
if (err) console.error(err)
}); //Only saves []
这是一个数组而不是对象。如果 randomJsonObject 是一个对象,那么这将有效。
尝试以下操作,在开始时设置 randomJsonObect = {}
,然后再次进行实验。
我最近尝试使用 fs 修改特定目录中的 JSON 文件。这很好用,我只是用
let randomJsonObject = JSON.parse(fs.readFileSync("./file.json", "utf8")); //Should read [] at first because there's nothing written inside this file except []
当我尝试修改它时,问题就出现了。我想检查一个特定的数组(这里称为“某物”)是否已经存在,如果不存在,它应该在其中放入一些值。所以我尝试使用
if(!randomJsonObject["something"]) {
randomJsonObject["something"] = [{"name": "asd", "phone": 0}, {"name": "asd222", "phone":234}];
}
问题是,当我记录 JSON 对象时,它工作正常,但如果我尝试记录 JSON.stringify(randomJsonObject),它只会记录 [],这是我在开始时什么都没有,它只是被解析...
console.log(randomJsonObject); //Logs correct JSON Array, with 2 Objects inside it
console.log(JSON.stringify(randomJsonObject)); //Logs [] and nothing else
有谁知道为什么会这样?显然,如果我尝试将它保存到我的文件中,那么它只会再次保存 [] ...缓存有问题吗?还有别的吗?感谢帮助 :) 另外,我对使用 JSON 还很陌生,尤其是在 JavaScript 中,所以也许它真的很简单,但我只是看不到它 ^^
fs.writeFile("./file.json", JSON.stringify(randomJsonObject), (err) => {
if (err) console.error(err)
}); //Only saves []
这是一个数组而不是对象。如果 randomJsonObject 是一个对象,那么这将有效。
尝试以下操作,在开始时设置 randomJsonObect = {}
,然后再次进行实验。