【问题标题】:Add to json list in Node.js在 Node.js 中添加到 json 列表
【发布时间】:2017-12-01 01:01:43
【问题描述】:

我对 Node 很陌生,我将我的数据保存在一个 json 文件中,我想动态地将人员添加到一个 json 列表中。我该怎么办?

JSON:

{
  "people": []
}

JavaScript

const fs = require('fs');

function addPerson() {
  var jsonFile = fs.readFileSync("/Users/Nick/Desktop/Js/names.js");
  var content = JSON.parse(jsonFile);
  var newPerson = {
    "fname": "John",
    "lname": "Davis",
    "job": "developer"
  };
  content.people.push(newPerson);
}

addPerson()

错误

undefined:1
const fs = require('fs');
^

SyntaxError: Unexpected token c in JSON at position 0

【问题讨论】:

  • 仅供参考,在 node.js 中,require('somefile.json') 将一步读取 JSON 并为您同步解析。关键是它有.json 文件扩展名。
  • 您收到一个错误,因为fs.readFileSync("/Users/Nick/Desktop/Js/names.js") 是您的 JS 文件的路径,而不是您的 JSON 文件。

标签: javascript arrays json node.js


【解决方案1】:

数组有.push

var obj = {
  "people": []
};

obj.people.push(yourPersonObj);

如果是 JSON 字符串,请使用 JSON.parseJSON.stringify

【讨论】:

    【解决方案2】:

    首先,您必须将 Json 字符串解析为一个对象,然后将所需的数据添加到数组中,然后将对象字符串化回 json。

    var obj = {
      "people": []
    };
    JSON.parse(obj);
    obj.people.push (yourNewData);
    JSON.stringify (obj);
    

    【讨论】:

      【解决方案3】:

      异步读取文件并解析数据。然后,您可以简单地将新的 JSON 对象推送到数组,然后再将更新的数据写回文件。

      var fs = require('fs')
      
      var newPerson = {
          "fname": "John",
          "lname": "Davis",
          "job": "Developer"
      };
      
      fs.readFile('./people.json', function(err, data) {
          if (err)
              throw err;
          var content = JSON.parse(data);
          content.people.push(newPerson);
          fs.writeFile('./people.json', JSON.stringify(content), function(err) {
              if (err)
                  throw err;
              console.log('Done!')
          });
      });
      

      您可以使用https://www.npmjs.com/package/stream-json 来读取超出可用内存的巨大 json 文件。

      【讨论】:

        猜你喜欢
        • 2021-08-03
        • 2017-11-10
        • 1970-01-01
        • 2017-11-30
        • 2022-01-20
        • 2020-06-26
        • 2019-01-30
        • 1970-01-01
        • 2023-01-17
        相关资源
        最近更新 更多