我需要添加当前JSON中不存在的属性。 json对象如下所示。
var jsonObj = {
"result" : "OK",
"data" : []
};
我想在'数据'中添加温度。我可以像下面这样做。
jsonObj.data.push( {temperature : {}} );
然后,我想在'温度'内添加'home','work'。结果如下所示。
{
"result" : "OK",
"data" : [
{ "temperature" : {
"home" : 24,
"work" : 20 } }
]
};
我怎么能这样做?我成功地在'数据'中插入'温度',但无法添加'home'和amp;在温度范围内“工作”。 '温度'内可能有更多,所以需要用{}括起来。
答案 0 :(得分:13)
这个怎么样?
var temperature = { temperature: { home: 24, work: 20 }};
jsonObj.data.push(temperature);
我无法分辨两个步骤中的问题是否对您的问题的结构非常重要,但是可以稍后通过索引到数组中来添加主页和工作属性,就像这样:
jsonObj.data.push({ temperature: { }});
jsonObj.data[0].temperature.home = 24;
jsonObj.data[0].temperature.work = 20;
但是,这不是一个好主意,因为它依赖于数组索引来查找温度对象。如果这是一项要求,那么最好通过data
数组循环来找到您最终感兴趣的对象。
编辑:
循环查找温度对象的示例将如下所示:
for (var i = 0; i < jsonObj.data.length; i++) {
if (jsonObj.data[i].temperature) {
break;
}
}
jsonObj.data[i].temperature.home = 24;
jsonObj.data[i].temperature.work = 20;
编辑:
如果您在开发时未知您感兴趣的特定属性,则可以使用括号语法来改变:
for (var i = 0; i < jsonObj.data.length; i++) {
if (jsonObj.data[i]['temperature']) {
break;
}
}
jsonObj.data[i]['temperature'].home = 24;
jsonObj.data[i]['temperature'].work = 20;
这意味着您可以在那里使用变量而不是硬编码:
var target = 'temperature';
for (var i = 0; i < jsonObj.data.length; i++) {
if (jsonObj.data[i][target]) {
break;
}
}
jsonObj.data[i][target].home = 24;
jsonObj.data[i][target].work = 20;
答案 1 :(得分:0)
怎么样
jsonObj.data.push( {
temperature : {
"home" : 24,
"work" : 20
}
} );