Как разобрать JSON-ввод - PullRequest
0 голосов
/ 18 июня 2019

Последние два дня я читал документы JQ и не нашел, как извлечь значения и собрать их вместе.

У меня есть вывод curl:

...
{
    "key": "Agreement",
    "doc_count": 1603,
    "level_cnt": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
            {
            "key": "INFO",
            "doc_count": 1458
          },
          {
            "key": "ERROR",
            "doc_count": 145
          }
        ]
    }
}
...

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

Agreement INFO:1458 ERROR:145

Беда в том, что, когда я пытаюсь разобрать необходимые ключи, их значения собираются потом:

jq '.aggregations.controller_cnt.buckets[].key, .aggregations.controller_cnt.buckets[].level_cnt.buckets[].key, .aggregations.controller_cnt.buckets[].level_cnt.buckets[].doc_count

"Agreement" "INFO" "ERROR" 1469 149

Как построить этот jq-запрос?

Спасибо заранее!

1 Ответ

2 голосов
/ 18 июня 2019

Просто сопоставьте его со строкой.

jq --raw-output '.key, ( .level_cnt.buckets[] | "\(.key):\(.doc_count)" )'

При следующем вводе:

{
    "key": "Agreement",
    "doc_count": 1603,
    "level_cnt": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
            {
            "key": "INFO",
            "doc_count": 1458
          },
          {
            "key": "ERROR",
            "doc_count": 145
          }
        ]
    }
}

будет выводиться:

Agreement
INFO:1458
ERROR:145

проверено при jqиграть .

...