我有下一个数据:
reservations = {
"2016":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 111"}},
"2017":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 222"}}
}
我需要更改一些notes_backend
,然后将更新的reservations
发送到API。
这是我的代码:
var reservations_obj = JSON.parse(reservations),
raw_id = 'A36822';
for (var year in reservations_obj){
if (raw_id in reservations_obj[year]){
reservations_obj[year][raw_id]["notes_backend"] = "UPDATED NOTES";
console.log('new_data:', reservations_obj[year][raw_id]); // new_data: {datetime: "6/22/17 at 11:00AM", visitors: "11 guests", notes_backend: "UPDATED NOTES"}
console.log(JSON.stringify(reservations_obj)); // no changes
break;
}
}
... send updated reservations_obj to API
第一个console.log
表示reservations_obj[year][raw_id]
已更改,但第二个console.log
向我显示初始reservations_obj
,但没有任何更新。
上面的代码基于Python逻辑,但是如何在JavaScript中实现它?
答案 0 :(得分:1)
您的代码工作正常..但请记住,预留变量已包含PARSED json。
var reservations = {
"2016":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 111"}},
"2017":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 222"}}
}
// var reservations_obj = JSON.parse(reservations), // reservations is already PARSED!
var reservations_obj = reservations,
raw_id = 'A36822';
for (var year in reservations_obj){
if (raw_id in reservations_obj[year]){
reservations_obj[year][raw_id]["notes_backend"] = "UPDATED NOTES!!!!!!!!!!!!!!!!!";
console.log(JSON.stringify(reservations_obj));
break;
}
}
答案 1 :(得分:0)
你只有很少的语法错误。首先,JSON必须是一个字符串:
var reservations = `{
"2016":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 111"}},
"2017":{"A36822":{"datetime":"6/22/17 at 11:00AM","visitors":"11 guests", "notes_backend":"Some notes 222"}}
}`
这里的代码工作plunker几乎相同。 (打开控制台)