Найти запись в списке объектов JSON на основе ключа объекта - PullRequest
0 голосов
/ 15 января 2019

У меня есть JSON, который среди прочего контента верхнего уровня включает в себя следующее:

{
  "organizationStructure": [
    {
      "id": 212119,
      "key": "level2"
    },
    {
      "id": 212112,
      "key": "level1"
    }
  ]
}

Как мне выполнить фильтрацию по ключу, чтобы найти только заданный идентификатор (например, для "level2")?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Или, чтобы было проще (или сложнее, в зависимости от вашей точки зрения):

jq '.organizationalStructure[] |
    select(.key == "level1") | {id: .id}' 

Часто приятно очистить вывод:

jq -r '.organizationalStructure[] |
        select(.key == "level1") | {id: .id}.id'

Согласно предложению PesaThe в комментариях, это может быть упрощено до:

jq -r '.organizationalStructure[] |
    select(.key == "level1").id' 

и {.id: id} можно записать просто {id}

0 голосов
/ 15 января 2019

Это можно сделать с помощью select. Обратите внимание, что если имеется более одного элемента с ключом level2, будет возвращено только первое:

.organizationalStructure | map(select(.key == "level2") | .id)[0]
...