J'ai un arbre JSON qui contient des nœuds et des enfants - le format est le suivant:manipuler Constructive toute valeur/objet dans un arbre JSON de profondeur inconnue
jsonObject =
{
id:nodeid_1,
children: [
{
id:nodeid_2,
children:[]
},
{
id:nodeid_3,
children:[
{
id:nodeid_4,
children:[]
},
{
id:nodeid_5,
children:[]
}
}
}
Je ne sais pas la profondeur de cet arbre, un nœud est capable d'avoir beaucoup d'enfants qui ont aussi beaucoup d'enfants et ainsi de suite.
Mon problème est que j'ai besoin d'ajouter des nœuds dans cet arbre en utilisant un nodeID. Par exemple, une fonction qui peut prendre un nodeID et l'objet node (y compris ses enfants), serait capable de remplacer ce nœud dans l'arbre - ce qui en conséquence deviendrait un arbre plus grand.
Je n'ai rencontré que des fonctions récursives qui me permettent de parcourir tous les nœuds dans un arbre JSON et une modification que j'ai faite de l'une de ces fonctions me renvoie l'objet nœud - mais ne m'aide pas modifier l'arbre d'origine:
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");
}
}
}
qui me permet de faire le test suivant:
findNode.find("nodeid_3",json);
alert(findNode.node);
donc, pour résumer - comment puis-je modifier une valeur d'un arbre JSON qui a une profondeur inconnue?
Merci à l'avance
Bonjour, @TJCrowder, 'jsonObject' n'est pas un json, c'est un objet js. –
@ Joe.wang: Je sais. (C'est une de mes bêtes noires, en fait.) Je pense que tu voulais dire cela à Dan. –