如何解析JSON输入

时间:2019-06-18 12:02:53

标签: json linux jq

最近两天我一直在阅读JQ-s文档,却不知道如何提取值并将它们放在一起。

我有一些卷曲输出:

...
{
    "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 个答案:

答案 0 :(得分:2)

只需将其映射到字符串即可。

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 play测试。