我正在尝试从一组JSON数据中建立一个时间数组,并希望使用jq来实现这一点,而不必用另一种语言编写代码来进行处理。
数据
[
{
"id": "abc",
"time": 34
},
{
"id": "def",
"time": 25
},
{
"id": "abc",
"time": 45
}
]
我想获取格式为
的输出{
"abc": [ 34, 45 ],
"def": [ 25 ]
}
答案 0 :(得分:2)
这是一种方法。
jq 'reduce .[] as $i ({}; .[$i.id] += ($i|[.time]))'
答案 1 :(得分:1)
仅使用jq内置函数的一种功能性(无reduce
的方法):
group_by(.id)
| map( {(.[0]|.id): (map([.time]) | add)} )
答案 2 :(得分:0)
如果愿意,这是基于 jtc
Unix实用程序的替代解决方案:
bash $ echo {} | jtc -i file.json -mi'<id>l:<K>v[-1][time]<V>v' -T'{ "{K}":{V} }'
{
"abc": [
34,
45
],
"def": 25
}
bash $