将数组保存到 JSON 文件,然后使用 Array.push() 将数据保存在其中

Posted

技术标签:

【中文标题】将数组保存到 JSON 文件,然后使用 Array.push() 将数据保存在其中【英文标题】:Save arrays to JSON file and then use Array.push() to save data in it 【发布时间】:2018-08-13 14:05:25 【问题描述】:

我正在创建一个日历程序,我的目标是将事件等保存在 JSON 文件中。 我认为最好的方法是将数组存储在 JSON 文件中的数组中(这样我可以遍历每个数组并在程序启动时加载它们)。

首先:如何将数组推送到 JSON 中的数组中?有什么建议?比如说我有变量var event,它等于一个数组"id": elementTitle, "year": year, "month": month, "day": day;,它将是JSON.stringify(event)'ed。那么如何将其保存到已在 JSON 文件中创建的数组中呢?:events =

顺便说一下,这个程序是用electron api创建的,也是用node.js。

【问题讨论】:

你不能,因为 JSON 是一个字符串。您需要对其进行解析,然后修改,然后再次字符串化。 哦,当然!非常感谢^^ 您混淆了数组 ([item, item, item...]) 和对象 (key:value, key:value, key:value...)。 【参考方案1】:

你可以这样做。

使用 [] 声明事件,表示它是一个数组。

//file.json


  "events":[]

使用节点文件系统或“fs”模块,您可以读取和写入文件。下面的示例使用异步读取和写入,因此应用程序不会停止和等待 - 但您也可以同步执行此操作。

//app.js

let fs = require('fs');

fs.readFile('/path/to/local/file.json', 'utf8', function (err, data) 
   if (err) 
       console.log(err)
    else 
       const file = JSON.parse(data);
       file.events.push("id": title1, "year": 2018, "month": 1, "day": 3);
       file.events.push("id": title2, "year": 2018, "month": 2, "day": 4);

       const json = JSON.stringify(file);

       fs.writeFile('/path/to/local/file.json', json, 'utf8', function(err)
            if(err) 
                  console.log(err); 
             else 
                  //Everything went OK!
            );
   

);

More examples

【讨论】:

您好,感谢您的回答!我把你的答案作为正确的答案,因为它很容易显示它是如何完成的。但无论如何,我如何访问数组中第一个对象的 id 属性?是file.events[0].id吗?编辑:没关系,我测试了它,它工作:)【参考方案2】:

我有一个变量 var 事件,它等于一个数组 "id": elementTitle, "year": year, "month": month, "day": day

这不是一个数组,它是一个对象

无论如何,您修改保存到磁盘的 json 的方法是从磁盘读取它,JSON.parse将其放入 javascript 对象(或数组)中,修改它并用新对象重新写入文件(或数组)

【讨论】:

以上是关于将数组保存到 JSON 文件,然后使用 Array.push() 将数据保存在其中的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON ARRAY 转换为 NSNumber 数组

php如何将mysql数据转为数组

将数组保存到Big Query

将 JSON 保存到文件,如果存在则更改输出

如何使用 numpy.savez 将带有子数组的数组保存到单独的 .npy 文件中

使用列名将多个数组保存到 csv 文件