是否可以修改位于 JSON 文件上的数组?
Posted
技术标签:
【中文标题】是否可以修改位于 JSON 文件上的数组?【英文标题】:Is it possible to modify an array located on a JSON file? 【发布时间】:2021-03-05 19:02:30 【问题描述】:我正在尝试创建一个存储字符串数组的命令,并且因为我不希望由于进程重新启动而丢失所有内容,所以我决定使用 JSON 文件数组.到目前为止,我已经能够写入文件并添加数组。但是,我的障碍是尝试修改该数组并使用它更新文件。每当我尝试将.push
添加到数组时,它确实添加了字符串,而不是添加到文件中。所以我提出了一个问题:是否可以修改位于 JSON 文件中的数组?代码片段如下
const database = require('../../characters.json')
const charArray = database[message.author.id]
switch(args[0].toLowerCase())
case "add":
charArray.push(`$args.slice(1).join(" ")`)
break;
case "view":
// This code works
case "remove":
let pos = charArray.indexOf(`$args.slice(1).join(" ")`)
charArray.splice(pos, 1)
break;
default:
// This code works
【问题讨论】:
我认为您应该将更改写入文件***.com/questions/36856232/… @IzzyEngelbert 我相信这是 Harshana Smith 回答的基础 【参考方案1】:您必须写入 JSON 文件才能修改其中的数组。为此,您可以使用 NodeJS fs 库。检查下面的代码:
const fs = require('fs');
const database = require('../../characters.json')
const charArray = database[message.author.id]
switch(args[0].toLowerCase())
case "add":
charArray.push(`$args.slice(1).join(" ")`)
database[message.author.id] = charArray;
fs.writeFileSync('../../characters.json', JSON.stringify(database));
break;
case "view":
// This code works
case "remove":
let pos = charArray.indexOf(`$args.slice(1).join(" ")`)
charArray.splice(pos, 1)
break;
default:
// This code works
【讨论】:
我假设对于remove
,我执行相同的 fs.writeFileSync 代码?
是的。你必须这样做【参考方案2】:
每次执行突变时,您都必须重写整个 json 文件。
【讨论】:
以上是关于是否可以修改位于 JSON 文件上的数组?的主要内容,如果未能解决你的问题,请参考以下文章
是否将备份位于 iOS 应用程序上的文档文件夹中的所有文件?
将 json 对象文件保存为 json 数组而不是 s3 上的 json 对象
通过位于http服务器上的ks文件无人值守安装CentOS 6.9