jSon = {
"id":"node1",
"name":"Languages",
"rel":"",
"children":1,
"step":1,
"path":1,
"nodes":[
{
"id":"node2",
"name":"Java",
"rel":"Pure Object Oriented Prog",
"children":1,
"step":2,
"path":2,
"nodes":[
{
"id":"node3",
"name":"C#",
"rel":"Framework",
"children":0,
"step":3,
"path":3,
"nodes":[]
},{
"id":"node4",
"name":"C++",
"rel":"OOPS",
"children":0,
"step":3,
"path":4,
"nodes":[]
}]
}]
};
对于上述结构,我如何获得id(key)= node3(value)
的路径(即)jSon.nodes[0].nodes[1].id
这样我就可以推送新的对象(即)jSon.nodes[0].nodes.push(newjSon);
或者是否有任何其他方法可以在此结构的特定位置添加新对象... 请推荐一些javascript代码..没有jQuery
答案 0 :(得分:0)
var somethingElse = "data_you_want_to_push"; // not in JSON
var myObject = JSON.parse(jSon);
myObject.nodes.forEach ( function(singleNodeLevel1){
singleNodeLevel1.nodes.push(somethingElse);
});
jSon = JSON.stringify(myObject);
如果需要,你可以添加计数器并在forEach循环中增加它,或者只使用
if (singleNodeLevel1.id === "something") singleNodeLevel1.nodes.push(somethingElse);
这是没有JQuery,但需要在浏览器中支持ECMAScript5,IE8及更早版本不支持它,但如果您的浏览器不支持,可以为它添加“垫片”