我有一个包含节点和子节点的 JSON 树 - 格式为:
jsonObject =
{
id:nodeid_1,
children: [
{
id:nodeid_2,
children:[]
},
{
id:nodeid_3,
children:[
{
id:nodeid_4,
children:[]
},
{
id:nodeid_5,
children:[]
}
}
}
我不知道这棵树的深度,一个节点能够有很多孩子,也有很多孩子等等。
我的问题是我需要使用 nodeID 将节点添加到此树中。例如,一个可以采用 nodeID 和节点对象(包括其子对象)的函数将能够替换树中的该节点 - 结果将成为一棵更大的树。
我只遇到递归函数,它允许我遍历 JSON 树中的所有节点,并且我对这些函数之一所做的修改返回了节点对象 - 但对我没有帮助,因为我需要修改原始树:
var findNode = {
node:{},
find:function(nodeID,jsonObj) {
if( typeof jsonObj == "object" ) {
$.each(jsonObj, function(k,v) {
if(v == nodeID) {
findNode.node = $(jsonObj).eq(0).toArray()[0];
} else {
findNode.find(nodeID,v);
}
});
} else {
//console.log("jsobObj is not an object");
}
}
}
这使我可以进行以下测试:
findNode.find("nodeid_3",json);
alert(findNode.node);
综上所述 - 如何修改深度未知的 JSON 树的值?
提前致谢