Javascript 如何显示JSON对象的ID和子对象?

Javascript 如何显示JSON对象的ID和子对象?,javascript,jquery,json,tree,Javascript,Jquery,Json,Tree,标题听起来不清楚,但我正试图用ID在警报中显示树的JSON如果ID有子项,我会添加单词children,当组完成时,我会添加一个|来表示组结束了,问题是当组结束时,我找不到添加该|的方法 所以,这棵树: 将显示为: 1,儿童,3,7,2 | 4,儿童,5| 因此,我知道ID:1有子项,它们是ID:3、ID:7和ID:2,由于|管道符号等等,组结束了,但我不知道如何创建一些东西来检查和添加|。你能帮我吗 提前谢谢 我的代码: var data='[{name:node1,id:1,is_open

标题听起来不清楚,但我正试图用ID在警报中显示树的JSON如果ID有子项,我会添加单词children,当组完成时,我会添加一个|来表示组结束了,问题是当组结束时,我找不到添加该|的方法

所以,这棵树:

将显示为:

1,儿童,3,7,2 | 4,儿童,5|

因此,我知道ID:1有子项,它们是ID:3、ID:7和ID:2,由于|管道符号等等,组结束了,但我不知道如何创建一些东西来检查和添加|。你能帮我吗

提前谢谢

我的代码:

var data='[{name:node1,id:1,is_open:true,childs:[{name:child2,id:3},{name:child2,id:7},{name:child1,id:2}]},{name:node1,id:4,is_open:true,childs:[{name:child2,id:5}]}]; var数组=[]; //将字符串转换为对象 //或者您可以简单地更改第一行。 数据=$.parseJSONdata; //函数来循环数组 函数ListNodeInputVal{ 如果jQuery.isArrayinputVal{ $.eachinputVal、functioni、elem{ 数组.pushelem.id; console.logelem; 如果jQuery.isArrayelem.children{ 数组。推送“children”; listNodeselem.children; } }; } } listNodesdata; 警报阵列;
这不需要jQuery。对于简化版本的脚本,您可以将本机用于:

var data=JSON.parse'[{name:node1,id:1,is_open:true,child2,id:3},{name:child2,id:7},{name:child1,id:2}]},{name:node1,id:4,is_open:true,child2,id:5}]}; var result=data.mapfunctionitem{ 返回[item.id].concat'children',item.children.mapfunctionsubitem{ 返回subitem.id; }; }.加入“|”;
结果 这不需要jQuery。对于简化版本的脚本,您可以将本机用于:

var data=JSON.parse'[{name:node1,id:1,is_open:true,child2,id:3},{name:child2,id:7},{name:child1,id:2}]},{name:node1,id:4,is_open:true,child2,id:5}]}; var result=data.mapfunctionitem{ 返回[item.id].concat'children',item.children.mapfunctionsubitem{ 返回subitem.id; }; }.加入“|”; 结果 试试这个:

变量数据=[{name:node1,id:1,is_open:true,childs:[{name:child2,id:3},{name:child2,id:7},{name:child1,id:2}]},{name:node1,id:4,is_open:true,childs:[{name:child2,id:5}]}]; var-str=; //1,儿童,3,7,2 | 4,儿童,5| $.eachdata,functioni,item{ iItem.id{ str+=item.id+',子项,' $.eachitem.children,functionj,children{ ifchild.id{ str+=child.id; str+=j>=item.children.length-1?|:,; } }; } }; alertstr; 试试这个:

变量数据=[{name:node1,id:1,is_open:true,childs:[{name:child2,id:3},{name:child2,id:7},{name:child1,id:2}]},{name:node1,id:4,is_open:true,childs:[{name:child2,id:5}]}]; var-str=; //1,儿童,3,7,2 | 4,儿童,5| $.eachdata,functioni,item{ iItem.id{ str+=item.id+',子项,' $.eachitem.children,functionj,children{ ifchild.id{ str+=child.id; str+=j>=item.children.length-1?|:,; } }; } }; alertstr;
我已经为任何类型的json对象编写了一个递归函数,以便以归档方式打印。。它是用爪哇语写的。。你可以调整它来使用它

static void printRecursive(JSONObject obj) {   
for(Object key:obj.keySet()) {
       //System.out.println(obj.get(key.toString()).getClass().getSimpleName());
        if(obj.get(key.toString()) instanceof JSONArray) {
            JSONArray aobj = ((JSONArray)obj.get(key.toString())); 

            for(int i=0;i<aobj.length();i++) {
                System.out.println(key.toString());
                printRecursive(aobj.getJSONObject(i));
            }
        }
        else
        if(obj.get(key.toString()) instanceof JSONObject) {
            System.out.println(key.toString());
            printRecursive((JSONObject)obj.get(key.toString()));
        }
        else
            System.out.println(key.toString()+" -> "+obj.get(key.toString()));
    }
}

我已经为任何类型的json对象编写了一个递归函数,以便以归档方式打印。。它是用爪哇语写的。。你可以调整它来使用它

static void printRecursive(JSONObject obj) {   
for(Object key:obj.keySet()) {
       //System.out.println(obj.get(key.toString()).getClass().getSimpleName());
        if(obj.get(key.toString()) instanceof JSONArray) {
            JSONArray aobj = ((JSONArray)obj.get(key.toString())); 

            for(int i=0;i<aobj.length();i++) {
                System.out.println(key.toString());
                printRecursive(aobj.getJSONObject(i));
            }
        }
        else
        if(obj.get(key.toString()) instanceof JSONObject) {
            System.out.println(key.toString());
            printRecursive((JSONObject)obj.get(key.toString()));
        }
        else
            System.out.println(key.toString()+" -> "+obj.get(key.toString()));
    }
}

添加数组。按“|”;当。每个循环完成时。这样以后检查孩子的结局也会更容易。你不需要为此添加新问题@RejithRKrishnan问题是,您的代码是手动执行的,它实际上没有检测到任何添加数组的内容;当。每个循环完成时。这样以后检查孩子的结局也会更容易。你不需要为此添加新问题@RejithRKrishnan问题是,你的代码是手动执行的,它没有检测到任何帮助我的问题,我认为使用JQuerythat会更整洁。这就像是一个老板的极端lol,我没想到会有这么整洁的东西,纯JavaScript加上修复后显示我的代码,是小悟空吗?谢谢你的帮助,我认为使用jquery会更整洁这就像是一个超级老板,哈哈,我没想到会有这么整洁的东西,用纯JavaScript加上修改后的代码,小悟空是你吗?