我有一个 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
打印保持级别的名称。
更准确地说,我无法弄清楚如何获得树的水平。