arrays - 如何向 Node JS 中的现有 JSON 文件数组添加值

标签 arrays json node.js

我有一个现有的 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/

相关文章:

node.js - NestJS + TypeORM 设计模式 : resolver vs service

java - (Node.js/Java) 如何使 XML 输出漂亮

python - 从 1 维数据 reshape 生成 4 维数组

java - For Loop 保龄球得分

java - 我的 Android 应用程序 httpGet 出错

c++ - 修复错误的 JSON 数据

node.js - npm publish 是否执行 npm 包

javascript - 如何使用 rxjs 根据时间从数组中过滤项目?

arrays - 为什么我的数组在 React 中接收它的函数处为空?

json - 未知内容类型 : json How to load JSON document as XML in MarkLogic 8