将数组保存到 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() 将数据保存在其中的主要内容,如果未能解决你的问题,请参考以下文章