jq для получения значения, используя ключ из вложенного json, когда ключ может быть глубоко вложенным - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть вложенный JSON, как показано ниже.Мне нужно перечислить значения всех '.url' независимо от того, насколько глубоко они вложены.

{
 section1: {
  url: "abc/efg/dgh.com",
  name: "test1"
 },
 section2: {
   .section3: {
     url: "efef/dedede/efdgh.com",
     name: "test2"
    }
 }
}

Ожидаемый результат следующий:

["abc/efg/dgh.com", "efef/dedede/efdgh.com"]

Заранее спасибо

1 Ответ

0 голосов
/ 03 декабря 2018

Если вам нужно получить доступ к чему-либо «независимо от того, насколько глубоко оно вложено», то recurse ваш друг.

jq '[recurse|.url? // empty]' file.json

Знак вопроса предотвращает нас от неудачи, когда рекурсия достигает чего-то, чтоне объект (например, листовые строки).И //empty заменяет значения, которые мы получаем от объектов без ключа "url", на пустые результаты (поэтому он удаляет их).

...