Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JSON转换为树状JSON_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 将JSON转换为树状JSON

Javascript 将JSON转换为树状JSON,javascript,angularjs,json,Javascript,Angularjs,Json,我需要将treeData JSON转换为不同的for,以便在其上使用java脚本中的可视化库 treeData={ "leftNode": { "leftNode": { "leftNode": { "leftNode": { "leftNode": "fence_brand_name = 'reebok'",

我需要将treeData JSON转换为不同的for,以便在其上使用java脚本中的可视化库

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,但您可以对其进行迭代。这只是一个简单的例子。您可以对其进行递归迭代。以递归方式告知自己函数循环: