从节点中的JSON文件中写入和删除元素
问题描述:
我正在阅读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" : [
"*",
"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对象
答
如果您已经在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');
});
});
答
您可以要求您的JSON文件第一:
var myJsonObject = require("./myfile");
现在你可以进行更改:
myJsonObject.restaurants.push(...);
现在保存您的文件回:
fs.writeFile("./myfile.json", JSON.stringify(myJsonObject, null, 4), function(err){
//handle err, success
});
它会工作,但如果文件内的数据太大,它将会有数据读取限制。 – zero8 2017-08-24 02:10:39