如何通过节点js将子节点添加到现有的json文件?

时间:2018-03-06 10:45:13

标签: json node.js express

我正在使用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吗?或者有更直接的方式?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用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);
   

答案 1 :(得分:0)

Jsonfile的append选项是指在追加模式下打开文件,在这种模式下,你只能添加到文件的末尾。

您需要使用普通的writeFile选项重写整个文件。有效地覆盖原始文件。

你可以在jsonfile code on line 91(它是一个简短的单文件节点模块)中看到它只是将append标志传递给fs.writeFile。我并不完全确定你什么时候会诚实地使用它,但是如果你想输出一堆文件然后附加在每个文件底部的一些json上,我就会假设它。