在Node中写入和删除JSON文件中的元素

时间:2014-11-20 18:30:25

标签: json node.js fs

我正在读一个JSON目标文件,我正在尝试修改这些元素并回写它。我知道这可以通过MongoDB轻松完成,但我需要使用JSON文件。我目前的结构如下:

{
  "lastupdated": "Thu Nov 20 2014 10:57:08 GMT-0500 (EST)",
  "restaurants" : {
    "McDonalds": {
      "Americas": [
        "Atlanta",
        "Cambridge",
        "Dayton"
      ],
      "Asia": [
        "Seoul",
        "Shanghai",
        "Singapore",
        "Tokyo"
      ],
      "Europe": [
        "Milan",
        "Madrid",
        "Amsterdamn"
      ]
  },
  "BurgerKing" : {
    "Americas": [
      "Atlanta",
      "Boston",
      "Charlottesville"
    ],
    "Asia" : [
        "Hong Kong",
        "Singapore",
        "Tokyo"
      ],
    "Europe" : [
        "Rome",
        "Madrid",
        "Dublin"
      ]
    }

  }
}

我希望能够做一些像json.add(object.restaurants.McDonalds.Americas。(“Washington D.C.”)这样的事情,这将更新tte文件,如下所示:

{
  "lastupdated": "Thu Nov 20 2014 10:57:08 GMT-0500 (EST)",
  "restaurants" : {
    "McDonalds": {
      "Americas": [
        "Atlanta",
        "Cambridge",
        "Dayton",
        "Washington D.C."
      ],

我目前正在使用FS来读取它并将其存储为json对象

2 个答案:

答案 0 :(得分:2)

如果您已经使用fs.readFile读取JSON文件并将JSON字符串存储在变量中,则需要解析JSON字符串,修改已解析的对象,然后将其转换回JSON字符串,用fs.writeFile

回写

我没有测试过这个,但粗略地说:

var fs = require('fs');
fs.readFile('pathToJSONData.json', function(err, data) {
  var obj = JSON.parse(data);
  obj.restaurants.McDonalds.Americas.push('Washington D.C.');
  var newJSON = JSON.stringify(obj);
  fs.writeFile('pathToJSONData.json', newJSON, function(err) {
    console.log('done');
  });
});

答案 1 :(得分:1)

您可以先要求使用json文件:

var myJsonObject = require("./myfile");

现在您可以进行更改:

myJsonObject.restaurants.push(...);

现在保存您的文件:

fs.writeFile("./myfile.json", JSON.stringify(myJsonObject, null, 4), function(err){
    //handle err, success
});