NodeJS JSON 文件的属性在编辑属性后重置为未定义
Posted
技术标签:
【中文标题】NodeJS JSON 文件的属性在编辑属性后重置为未定义【英文标题】:NodeJS JSON file's properties are resetting to undefined after editing a property 【发布时间】:2021-06-16 17:35:06 【问题描述】:当我编辑 JSON 文件时,其他属性消失/未定义,我在树莓派 4 上使用 Nodejs v14。
初始 JSON 内容:
"808327471816245248":
"LeaveMessage":"test",
"WelcomeChannel": "814906779402109018"
,
我编辑属性的代码:
const fs = require("fs");
const config = require("../../../serverconfig.json");
config[guild].LeaveMessage = "test1";
fs.writeFileSync(
client.config.path,
JSON.stringify(config, null, 2)
);
生成的 JSON 内容:
"808327471816245248":
"LeaveMessage":"test1",
,
有人知道为什么会这样吗?
提前致谢。
【问题讨论】:
【参考方案1】:writeFileSync()
方法已覆盖 JSON 文件中的所有内容,这就是删除其他属性的原因。要解决这个问题,您可以先使用 readFileSync
从文件中读取数据,将 JSON 解析为 javascript 对象,然后在将其写入文件之前编辑该对象的属性。
例如:
const fs = require("fs");
let rawData = fs.readFileSync(PATH_TO_FILE);
let obj = JSON.parse(rawData);
obj[guild].LeaveMessage = "test1";
let newData = JSON.stringify(obj);
fs.writeFileSync(PATH_TO_FILE, newData);
【讨论】:
以上是关于NodeJS JSON 文件的属性在编辑属性后重置为未定义的主要内容,如果未能解决你的问题,请参考以下文章
使用 nodejs 'request' 读取 JSON 响应的属性
nodejs第三天(核心模块与文件模块,核心模块和文件模块引入的区别,从模块外部访问模块内部,使用exports对象,npm包管理工具package.json文件,模块对象属性,将模块定义分类,npm