Мне нужно преобразовать treeData JSON в другое, так что я могу использовать некоторую библиотеку визуализации в java-скрипте на нем.Преобразование JSON в дерево, как JSON
treeData={
"leftNode": {
"leftNode": {
"leftNode": {
"leftNode": {
"leftNode": "fence_brand_name = 'reebok'",
"rightNode": "fence_brand_id = 123",
"centerOperator": "OR"
},
"rightNode": "fence_category_name = 'shoes'",
"centerOperator": "AND"
},
"rightNode": "latitude > 19.1140997",
"centerOperator": "AND"
},
"rightNode": "latitude = 72.89498",
"centerOperator": "AND"
},
"rightNode": "radius = 5000",
"centerOperator": "AND"
}
Глубина этого дерева может быть что угодно, и форма, я хочу, чтобы преобразовать его в это
newTreeData=[{
leftNode=[{
leftNode=[{
leftNode="left"
rightNode="right",
centerOperator="op"
}],
rightNode="right",
centerOperator="op"
}],
rightNode="right",
centerOperator="op"
}]
Я попытался с помощью этого кода, но никаких результатов до сих пор.
var addNodes=function(data){
if(isObj(data.leftNode)){
var right=data.rightNode;
var center=data.centerOperator;
newTreeData.push(rightNode:right,newCenterOperator:center,leftNode:[]);
addNodes(data.leftNode);
}else{
newTreeData.push(rightNode:data.rightNode,centerOperator:data.centerOperator,leftNode:[]);
}
}
var function isObj(val) {
if (val === null) { return false;}
return ((typeof val === 'function') || (typeof val === 'object'));
}
Я не знаю глубины дерева. поэтому я не могу использовать объектную нотацию @ alpham8 – Subhash
Но вы можете перебирать ее. Это был простой пример. Вы можете рекурсивно перебирать его. Сообщите себе о рекурсивном цикле функции: http://stackoverflow.com/questions/2549320/looping-through-an-object-tree-recursively – alpham8
да, спасибо, спасибо. – Subhash