Как использовать jq для извлечения ключей переменных и их значений из JSON? - PullRequest
0 голосов
/ 23 мая 2018

Если у меня есть файл JSON с именами ключей переменных, например:

{   
    "john": {"age": 40, "nickname": "jo"},
    "mary": {"age": 50, "nickname": "mo"}
}

Как использовать jq для извлечения ключей с некоторыми из их значений?

Пример:Извлеките имена и их возраст:

"john": 40
"mary": 50

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

В конкретном случае, о котором вы упомянули, можно использовать следующий фильтр:

to_entries[] | "\"\(.key)\": \(.value.age)"

Использование параметра командной строки -r (например, jq -rf program.jq) с вашим вводом приводит к:

"john": 40
"mary": 50

См. Также:

Рекурсивное извлечение значений объекта и имени родительского ключа с использованием jq

0 голосов
/ 24 мая 2018

Попробуйте это:

to_entries[] | {(.key): .value.age}

Вывод:

{
  "john": 40
}
{
  "mary": 50
}
0 голосов
/ 23 мая 2018

Сначала преобразовать объект в массив пар ключ / значение;затем вы можете выполнить итерацию и получить доступ к ключу и соответствующему значению в тандеме.

$ jq 'to_entries' tmp.json
[
  {
    "key": "john",
    "value": {
      "age": 40,
      "nickname": "jo"
    }
  },
  {
    "key": "mary",
    "value": {
      "age": 50,
      "nickname": "mo"
    }
  }
]
$ jq 'to_entries[] | "\(.key): \(.value.age)"' tmp.json
"john: 40"
"mary: 50"
...