使用jq将数组中的奇偶索引转换为json中的键值对

Gop*_*wal 2 parsing json jq

我正在尝试使用 jq 将 Solr 6.5 指标解析为键值对:

{
"responseHeader": {
"status": 0,
"QTime": 7962
},
"metrics": [
"solr.core.shard1",
"QUERY./select",
"solr.core.shard2",
"QUERY./update"
...
]
}
Run Code Online (Sandbox Code Playgroud)

我想在指标数组中选择偶数奇数条目,并将它们作为键值对放在一个对象中,如下所示:

{ 
   "solr.core.shard1": "QUERY./select",
   "solr.core.shard2": "QUERY./update",
   ...
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只能想出:

.metrics | to_entries | .[] | {(select(.key % 2 == 0).value): select(.key % 2 == 1).value}
Run Code Online (Sandbox Code Playgroud)

但这会返回错误或没有结果。

如果有人能指出我正确的方向,我将不胜感激。我觉得答案可能就在地图运算符中,但我一直无法弄清楚。

Rom*_*est 5

jq解决方案:

jq '[ .metrics as $m | range(0; $m | length; 2) 
      | {($m[.]): $m[(. + 1)]} ] | add' jsonfile
Run Code Online (Sandbox Code Playgroud)

输出:

{
  "solr.core.shard1": "QUERY./select",
  "solr.core.shard2": "QUERY./update"
}
Run Code Online (Sandbox Code Playgroud)

https://stedolan.github.io/jq/manual/v1.5/#range(upto),范围(from;upto)范围(from;upto;by)