使用jq解析和映射2个数组

时间:2019-12-20 00:09:34

标签: json jq

我正在使用类似于以下文件的JSON文件:

{   "Response" : {
    "TimeUnit" : [ 1576126800000 ],
    "metaData" : {
      "errors" : [ ],
      "notices" : [ "query served by:1"]
    },
    "stats" : {
      "data" : [ {
        "identifier" : {
          "names" : [ "apiproxy", "response_status_code", "target_response_code", "target_ip" ],
          "values" : [ "IO", "502", "502", "7.1.143.6" ]
        },
        "metric" : [ {
          "env" : "dev",
          "name" : "sum(message_count)",
          "values" : [ 0.0]
        } ]
      } ]
    }   } }

我的目的是显示标识符和值的映射,例如:

apiproxy=IO
response_status_code=502
target_response_code=502 
target_ip=7.1.143.6

我已经能够使用

解析名称和值

.[].stats.data[] | (.identifier.names[]).[].stats.data[] | (.identifier.values[])

但是我需要jq方法来映射值。

1 个答案:

答案 0 :(得分:5)

可以使用-r命令行选项在jq中完成整个操作:

.[].stats.data[]
| [.identifier.names, .identifier.values]
| transpose[]
| "\(.[0])=\(.[1])"