【问题标题】:How to add a json object to a json array in an external file in javascript / capserjs如何在javascript / capserjs的外部文件中将json对象添加到json数组中
【发布时间】:2017-05-24 12:32:40
【问题描述】:

我正在写入 casperjs 中的 json 文件,并尝试向其中添加新对象。

json 文件的样子

 { "visited": [

{
  "id": "258b5ee8-9538-4480-8109-58afe741dc2f",
  "url": "https://................"
},
{
  "id": "5304de97-a970-48f2-9d3b-a750bad5416c",
  "url": "https://.............."
},
{
  "id": "0fc7a072-7e94-46d6-b38c-9c7aedbdaded",
  "url": "https://................."
}]}

要添加到数组的代码是

    var data;

    if (fs.isFile(FILENAME)) {
        data = fs.read(FILENAME);
    } else {
       data = JSON.stringify({ 'visited': [] });
    }

        var json = JSON.parse(data);

        json.visited.push(visiteddata);

     data = JSON.stringify(json, null, '\n');

     fs.write(FILENAME, data, "a");

首先在现有的 { "visited" : [ ] } 数组下方添加一个新的 { "visited" : [ ] } 数组,其中包含前几个对象,随后脚本中断,因为 json 数组不再是有效的 json。

谁能指出我正确的方向。提前谢谢你。

【问题讨论】:

  • 而不是s.write(FILENAME, data, "a");(追加模式)使用s.write(FILENAME, data, "w");(覆盖模式)。
  • 谢谢。不敢相信我浪费了 45 分钟的生命试图弄清楚这一点!!!
  • 将其视为一项投资。下一次,你会更快地发现这样的错误。

标签: javascript json casperjs


【解决方案1】:

您有一个包含一些数据的 JSON 文件。

你:

  1. 读取该数据
  2. 修改该数据
  3. 将该数据的修改版本附加到原始文件中

这意味着该文件现在具有原始数据,然后,紧随其后的是一个几乎相同的副本,并添加了一点点。

您不需要原件。您只需要新版本。

您需要写入文件而不是追加文件。

'a' 标志更改为'w'

【讨论】:

  • 这很容易。非常感谢:) 它没有让我标记为正确,说我需要等待 5 分钟。稍后会回来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 2018-08-25
相关资源
最近更新 更多