Javascript 将JSON转换为树状JSON
我需要将treeData JSON转换为不同的for,以便在其上使用java脚本中的可视化库Javascript 将JSON转换为树状JSON,javascript,angularjs,json,Javascript,Angularjs,Json,我需要将treeData JSON转换为不同的for,以便在其上使用java脚本中的可视化库 treeData={ "leftNode": { "leftNode": { "leftNode": { "leftNode": { "leftNode": "fence_brand_name = 'reebok'",
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') );
}
您不需要这样做,因为您也可以使用数组表示法访问JSON对象,如下所示:
treeData["leftNode"]["leftNode"]
treeData.leftNode.leftNode
或者使用如下的对象表示法:
treeData["leftNode"]["leftNode"]
treeData.leftNode.leftNode
当然,您也可以对其进行迭代,例如。g、 :
for (var leftNode in treeData.leftNode) {
// do something with leftNode
}
我不知道这棵树有多深。因此,我不能使用对象符号@alpham8b,但您可以对其进行迭代。这只是一个简单的例子。您可以对其进行递归迭代。以递归方式告知自己函数循环: