如何将递归对象转换{ id, name: { data }, children: self[] }
为类似的数组{ id: id, name: name.data | join('/') }
?
例如,我想转换以下数据
[
{"id": "1", "name": { "data": "foo" }, "children": [] },
{"id": "2", "name": { "data": "bar" }, "children": [
{"id": "4", "name": { "data": "melon" }, "children": [
{"id": "5", "name": { "data": "soda" }, "children": [] }
] }
] },
{"id": "3", "name": { "data": "baz" }, "children": [
{"id": "6", "name": { "data": "my data" }, "children": [] }
] }
]
进入:
{"id": "1", "name": "foo"},
{"id": "2", "name": "bar"},
{"id": "4", "name": "bar/melon"},
{"id": "5", "name": "bar/melon/soda"},
{"id": "3", "name": "baz"},
{"id": "6", "name": "baz/my data"},
我不介意元素的顺序,因为每个id
给定的对象在每个输入中都有唯一的值。
我的尝试是
.. | (.children? // empty) | .[] | { id: .id, name: .name.data }
但这会产生单层的名称(即,,,foo
... )。bar
melon