2014-11-20 65 views
1

我正在阅读JSON对象文件,并试图修改元素并将其写回。我知道这可以很容易地用MongoDB来完成,但我需要用JSON文件来完成。我现在的结构是这样的:从节点中的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(“华盛顿”),这将更新TTE文件的样子。 :

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

我目前使用FS在读它,并将其存储作为JSON对象

回答

2

如果您已经在fs.readFile JSON文件读取和JSON字符串存储在一个变量,你需要解析JSON字符串,修改解析的对象,然后转换ERT它放回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'); 
    }); 
}); 
+0

它会工作,但如果文件内的数据太大,它将会有数据读取限制。 – zero8 2017-08-24 02:10:39

1

您可以要求您的JSON文件第一:

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

现在你可以进行更改:

myJsonObject.restaurants.push(...); 

现在保存您的文件回:

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