从上到下的顺序读取嵌套元素的属性,而不管嵌套级别如何

问题描述

提供以下输入数据

{
  "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"
]