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 学习二, nodejs调试

*.json文件如何打开

使用 nodejs 'request' 读取 JSON 响应的属性

NodeJS中 package.json各属性分析

nodejs第三天(核心模块与文件模块,核心模块和文件模块引入的区别,从模块外部访问模块内部,使用exports对象,npm包管理工具package.json文件,模块对象属性,将模块定义分类,npm

angularJS怎么修改一个json文件中的数据