我有一个JSON对象如下。
{
"name":"Me",
"groups": [
{
"name":"My Garage",
"groups":[
{
"name":"My Cars",
"groups":[],
"tags":[
{
"name":"Fiet Punto"
},
{
"name":"Gallardo"
}
]
},
{
"name":"My Bikes",
"groups":[]
}
]
},
{
"name":"My Bank",
"groups":[
{
"name":"Swiss Bank",
"groups":[]
},
{
"name":"Bank of America",
"groups":[],
"tags":[
{
"name":"Account 1"
},
{
"name":"Account 2"
}
]
}
]
}
],
"tags":[
{
"name":"My tag 1"
},
{
"name":"My tag 2"
}
]
}
我想要的输出如下:
Me
--My Garage
--My Cars
--Fiet Punto
--Gallardo
--My Bikes
--My Bank
--Swiss Bank
--Bank of America
-- Account 1
-- Account 2
--My Tag 1
--My Tag 2
我在构建递归方面遇到了问题。我想做的是:
name
。 groups
或tags
。 我怎样才能做到这一点?
编辑:
function getAllGroups(jsonObject)
{
//print the name of the current level object.
$("body").append(jsonObject.name);
//now if this object contains groups
if( jsonObject.hasOwnProperty( 'groups' ) )
{
//and if it is an array
if( jsonObject.groups.length > 0 )
{
//then for each object in groups of this object, call the function again.
$(jsonObject.groups).each(function(i, innerObject){
//print the index for debugging.
console.log(i + innerObject.name);
//make a recursive call to the function.
getAllGroups(innerObject);
});
}
}
else
{
console.log("does not exist anymore.")
}
}
我无法弄清楚如何同时评估tags
和groups
并打印保持关卡的名称。
更确切地说,我无法弄清楚如何获得树的等级。
答案 0 :(得分:1)
要获得树的级别,我认为最简单的方法是将当前级别传递给方法:
function getAllGroups(jsonObject,currentlevel)
{
//print the name of the current level object.
$("body").append(jsonObject.name);
//now if this object contains groups
if( jsonObject.hasOwnProperty( 'groups' ) )
{
//and if it is an array
if( jsonObject.groups.length > 0 )
{
var nextlevel = currentlevel+1;
//then for each object in groups of this object, call the function again.
$(jsonObject.groups).each(function(i, innerObject){
//print the index for debugging.
console.log(i + innerObject.name);
//make a recursive call to the function.
getAllGroups(innerObject,nextlevel);
});
}
}
else
{
console.log("does not exist anymore.")
}
}
通过启动第一级来使用它:
getAllGroups(yourJSON,1);