问题描述
提供以下输入数据
{
"foos": [
{
"id": "foo","bars": [
{
"id": "1","bars": []
},{
"id": "2","bars": [
{
"id": "9","bars": []
},{
"id": "8","bars": []
}
]
},{
"id": "3","bars": []
}
]
}
]
}
我想得到以下输出
[
"1","2","9","8","3"
]
我已经接近这个jsonpath表达式$.foos[:]..bars[:].id
,但是它改变了事物的顺序并导致以下输出
[
"1","3","8"
]
如您所见,嵌套元素被附加到输出的末尾,但是我需要它们在父元素的下面。
如果使用一个jsonpath表达式可以做到这一点,那就太好了,否则我将不得不编写一个递归函数。
编辑:更改了id的原因,因为它们实际上可以是一些随机数/字符串
解决方法
只需更改何时进行递归$.foos[:].bars[:]..id
给予
[
"1","2","9","8","3"
]