我正在使用ExpressJS编写我的应用程序和jsonfile(https://www.npmjs.com/package/jsonfile)来处理json文件。我有以下json文件:
{
"news": [
{
"id": "1",
"title": "News 1 heading",
"description": "Lorem ipsum dolor sit amet upidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"dateposted": "00188292929"
},
{
"id": "2",
"title": "News 2 heading",
"description": "Lorem ipsum dolor sit amet",
"dateposted": "00188292929"
}
]
}
现在,我想在“新闻”节点下添加另一组新闻,以便我的最终json看起来像这样:
{
"news": [
{
"id": "1",
"title": "News 1 heading",
"description": "Lorem ipsum dolor sit amet upidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"dateposted": "00188292929"
},
{
"id": "2",
"title": "News 2 heading",
"description": "Lorem ipsum dolor sit amet",
"dateposted": "00188292929"
},
{
"id": "3",
"title": "News 3 heading",
"description": "Lorem ipsum dolor sit amet",
"dateposted": "00188292929"
}
]
}
有一个带有jsonfile的append标志,但它附加在文件的末尾而不是给定的节点下。如何在现有节点下附加数据?做,我需要字符串化json,添加数据和JSONfy吗?或者有更直接的方式?
谢谢。
您可以使用Json PUSH将json对象附加到当前节点。代码如下所示:
var json={
"news": [
{
"id": "1",
"title": "News 1 heading",
"description": "Lorem ipsum dolor sit amet upidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"dateposted": "00188292929"
},
{
"id": "2",
"title": "News 2 heading",
"description": "Lorem ipsum dolor sit amet",
"dateposted": "00188292929"
},
{
"id": "3",
"title": "News 3 heading",
"description": "Lorem ipsum dolor sit amet",
"dateposted": "00188292929"
}
]
};
json.news.push({
"id": "3",
"title": "News 3 heading",
"description": "Lorem ipsum dolor sit amet",
"dateposted": "00188292929"
});
console.log(json);
Jsonfile的append选项是指在追加模式下打开文件,在这种模式下你只能添加到文件的末尾。
您需要使用普通的writeFile选项重写整个文件。有效地覆盖原始文件。
你可以在jsonfile中看到code on line 91(它是一个简短的单文件节点模块),它只是将append标志传递给fs.writeFile。我并不完全确定你什么时候会诚实地使用它,但是如果你想输出一堆文件然后在每个文件的底部附加一些json,我就会假设它。