【发布时间】:2017-07-30 19:55:21
【问题描述】:
我正在尝试跟踪树样式 JSON 对象中的所有分支,以从每个分支创建一个长的串联字符串。子节点的数量和每个节点的最大深度是未知的,因此必须将结果推广到任意数量。
我正在使用的数据类似于以下内容:
{
"name":"root",
"children": [
{
"name":"foo",
"children":[
{
"name":"bar",
"children":[]
},
{
"name":"baz",
"children":[]
}
]
},
{
"name":"zoo",
"children": [
{
"name":"zar",
"children": [
{
"name":"zaz",
"children": []
}
]
}
]
}
]
}
您可以在只有一个孩子的幼稚情况下看到这有效。我最困惑的地方是如何在多个孩子的情况下“重置”父母。而不是递归root -> foo -> bar -> baz
我想要root -> foo -> barroot -> foo -> baz
上述 jqplay 的所需输出:"root/foo/bar"
"root/foo/baz"
"root/zoo/zar/zaz"
我更喜欢纯 jq 解决方案,一般 Bash 解决方案也可以。
【问题讨论】:
-
非常问得好!
标签: json recursion tree jq recursive-datastructures