我有一个现有的 JSON 文件,数据如下。
[{"address":"unit f 11-13 short street, auburn, nsw 2144"},{"address":"village green brooks circuit, lidcombe, nsw 2141"}]
我想向此 JSON 文件添加新值。这是我的方法。
function saveNewAddress(
address /* :?string | void */, cb
) /* :Promise<string> */ {
return new Promise(function(resolve, reject) {
fs.appendFile('address-list.json', JSON.stringify(address), "utf8", function(err) {
if (err) throw err;
console.log("File saved.");
});
});
}
这可以工作,但它不会将新值添加到数组中。它将新值添加到数组的末尾。
最佳答案
当您使用fs.appendFile()
时,数据将作为字符串添加到文件末尾,而不是作为新的数组元素。
您需要以 JavaScript 对象的形式获取 JSON 文件的内容,将属性添加到数组中,最后保存新文件。
一种方法是使用 fs.readFile()
读取文件,就像 TGW 在评论中建议的那样。
然而 NodesJS 有一个方便的方法来使用 require()
来做到这一点:
const fs = require('fs');
const json = require('./address-list.json');
function saveNewAddress(address) {
return new Promise((resolve, reject) => {
json.push({address})
fs.writeFile('address-list.json', JSON.stringify(json), (err) => {
if (err) reject(err)
resolve("File saved.")
})
});
}
saveNewAddress('some_new_adress')
.then(result => {
console.log(result)
})
关于arrays - 如何向 Node JS 中的现有 JSON 文件数组添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203755/