我有一个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))
有人对如何实施有想法吗?任何帮助表示赞赏。
答案 0 :(得分:1)
您可以使用bracket notation向对象添加动态属性:
lcSettings[id] = { button_mode: false };
您可能还想验证settings.json
不为空,否则JSON.parse()
将失败。在这种情况下,您可能希望将lcSettings
初始化为一个空对象(lcSettings = {}
),以便上面的方法起作用。
答案 1 :(得分:1)
要将元素“推”到对象中,只需定义它们即可,如
object['123456789'] = { button_mode: true };