将相关数据与jq

时间:2019-03-19 15:25:47

标签: json jq

我正在尝试从一组JSON数据中建立一个时间数组,并希望使用jq来实现这一点,而不必用另一种语言编写代码来进行处理。

数据

[
    {
        "id": "abc",
        "time": 34
    },
    {
        "id": "def",
        "time": 25
    },
    {
        "id": "abc",
        "time": 45
    }
]

我想获取格式为

的输出
{
    "abc": [ 34, 45 ],
    "def": [ 25 ]
}

3 个答案:

答案 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 $