猿问

向 JSON 添加对象

我有一个settings.json包含以下数据的文件(其中123456789是一个不同的用户 ID):


{

 "123456789":

   {"button_mode":true}

}

所以我需要做的是将一个类似的id: {button_mode: value}对象推送到这个 JSON 文件,以防当前用户的 id 没有条目。我尝试使用lcSettings.push()但显然它不起作用,因为我有一个对象,而不是数组。当我用方括号而不是花括号将它变成一个数组时,我的代码根本不做任何事情。这是它的一个片段(Node.js):


var lcSettings = JSON.parse(fs.readFileSync('./settings.json', 'utf8'));

var currentUser = id;

if (lcSettings.hasOwnProperty(currentUser)) {

   // in case settings.json contains current user's id check for button_mode state

   if (lcSettings[currentUser].button_mode == true) {

      // if button_mode is on

   } else

   if (lcSettings[currentUser].button_mode == false) {

      // if button_mode is off

   }

} else {

   // in case there's no entry for current user's id

   // here's where I need to push the object for new user.

}

fs.writeFileSync('./settings.json', JSON.stringify(lcSettings))

有人对如何实施它有想法吗?任何帮助表示赞赏。


月关宝盒
浏览 372回答 2
2回答

四季花海

您可以使用括号表示法向对象添加动态属性:lcSettings[id] = { button_mode: false };您可能还想验证它settings.json不为空,否则JSON.parse()将失败。在这种情况下,您可能希望初始化lcSettings为一个空对象 ( lcSettings = {}) 以便上述操作有效。

芜湖不芜

要将元素“推”到一个对象,您只需定义它们,如object['123456789'] = { button_mode: true };
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答