首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jq对JSON进行分组和计数

问使用jq对JSON进行分组和计数
EN

Stack Overflow用户
提问于 2021-03-15 16:24:05
回答 2查看 519关注 0票数 2

我正在尝试将以下JSON转换为csv,其中包含每个唯一的" name“和总计数(即:出现该名称的次数)。

当前数据:

代码语言:javascript
复制
[
  {
    "name": "test"
  },
  {
    "name": "hello"
  },
  {
    "name": "hello"
  }
]

理想产出:

代码语言:javascript
复制
[
    {
        "name": "hello",
        "count": 2
    },
    {
        "name": "test",
        "count": 1
    }
]

我尝试过[.[] | group_by (.name)[] ],但得到了以下错误:

jq: error (at :11):不能用字符串"name“索引字符串

JQ播放链接:https://jqplay.org/s/fWqNUii1b2

注意,我已经使用jq将初始原始数据格式化为上面的格式。请参阅JQ play链接:https://jqplay.org/s/PwwRYscmBK

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-15 16:35:16

代码语言:javascript
复制
group_by(.name) 
    | map({name: .[0].name, count: length})   
代码语言:javascript
复制
[
  {
    "name": "hello",
    "count": 2
  },
  {
    "name": "test",
    "count": 1
  }
]

Jq▷游戏

根据OP的评论,使用以下jq过滤器计算多个对象的每个名称,其中.name是嵌套的。

代码语言:javascript
复制
map(.labels) 
    | map({name: .[0].name, count: length})

Jq▷游戏

票数 2
EN

Stack Overflow用户

发布于 2021-03-15 16:32:42

代码语言:javascript
复制
echo '[{"name": "test"}, {"name": "hello"}, {"name": "hello"}]' | jq 'group_by (.name)[] | {name: .[0].name, count: length}' | jq -s
代码语言:javascript
复制
[
  {
    "name": "hello",
    "count": 2
  },
  {
    "name": "test",
    "count": 1
  }
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66641816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档