如何解决如何更改 json 文件中的对象属性
我有一个名为 data.json 的巨大 JSON 文件,其中填充了具有相同属性的对象。 一个对象的示例是这样的:
{
"directory": "directory_here","posted": false,"date": null
}
在我的脚本中,我使用 fs.readFile 读取 data.json 文件,如果posted 为false,如果它运行一些函数,然后将posted 更改为true,并将date 从null 更改为当前日期。所以我需要更改 data.json 文件中的属性。我该怎么做?
解决方法
这里arr
是对象数组
arr.forEach((obj)=>{
if(!obj.posted) obj.posted = true;
if(!obj.date) obj.date = new Date()
})
,
除了少数病理情况外,您无法直接编辑 JSON 文本文件的内容。相反,您需要要么(a)读取-修改-写入数据,或者(b)切换到不同的存储格式, 确实允许就地编辑。
如果您(必须)坚持使用 JSON,您有两个主要选择:
-
分块读取文件,随时解析为 JSON。当你得到一个完整的对象时,根据需要修改它,然后将它写入一个新文件。读完整个文件,写完所有对象后,就可以用新创建的文件替换原来的文件了。
-
读取整个文件并将其解析为对象数组。对所有对象进行必要的更改,然后将整个数组(以 JSON 格式)写入原始文件的顶部。 (或者,为了更加安全,您可以写入一个新文件并在没有问题的情况下替换原始文件)。
第二种方法可能更容易编写,但会消耗更多内存。
一种可能的替代方法(我怀疑这不适合您的情况)是切换到确实允许就地编辑的存储格式。这可以是固定记录长度记录的文件,或者类似 SQLite 数据库的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。