Чтение свойств вложенных элементов в порядке сверху вниз независимо от уровня вложенности

#json #jsonpath

#json #jsonpath

Вопрос:

Учитывая следующие входные данные

 {
  "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",
  "2",
  "3",
  "9",
  "8"
]
  

Как вы можете видеть, вложенные элементы добавляются в конец вывода, но мне нужно, чтобы они были ниже родительского элемента.

Было бы здорово, если бы это было возможно с помощью одного выражения jsonpath, иначе мне придется написать рекурсивную функцию.

Редактировать: изменен идентификатор, потому что они могут быть фактически некоторым случайным числом / строкой

Ответ №1:

Просто измените, когда перейти к рекурсии $.foos[:].bars[:]..id

Дает

 [
  "1",
  "2",
  "9",
  "8",
  "3"
]