首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jq追加和计数元素数

如何使用jq追加和计数元素数
EN

Stack Overflow用户
提问于 2020-10-07 12:00:05
回答 1查看 198关注 0票数 1

所以我有这个json。我需要计算vulnerabilities[]数组中的元素数

代码语言:javascript
复制
{
  "dependencyId": 129707,
  "isVirtual": "false",
  "vulnerabilities": [
    {
     "name": "vul",
     "severity": "LOW",
    }
   ]
}
{
  "dependencyId": 129708,
  "isVirtual": "false",
  "vulnerabilities": [
    {
     "name": "vul",
     "severity": "LOW",
    },
    {
     "name": "vul",
     "severity": "HIGH",
    }
  ]
}
{
  "dependencyId": 129709,
  "isVirtual": "false",
  "vulnerabilities": []
}

我试过的是这个

代码语言:javascript
复制
jq '.' c.json | jq  '{id: .dependencyId, vulnCount: .vulnerabilities[] | length}'

结果:

代码语言:javascript
复制
{
  "id": 129707,
  "vulnCount": 2
}
{
  "id": 129708,
  "vulnCount": 2
}
{
  "id": 129709,
  "vulnCount": 2
}

预期结果

代码语言:javascript
复制
{
  "id": 129707,
  "vulnCount": 1
}
{
  "id": 129708,
  "vulnCount": 2
}
{
  "id": 129709,
  "vulnCount": 0
}

那么,如何根据数组中元素的数量从vulnerabilities[]获取漏洞的数量呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-07 12:08:28

您不需要单独调用jq。您可以这样做,如下所示,调用数组上的函数

代码语言:javascript
复制
{ id: .dependencyId, vulnCount: (.vulnerabilities|length) }

您尝试的问题是[]公开数组中的所有对象,对象上的length函数计算给定对象中键/值对的数量。

129707中的对象有两个键/值对,键名为nameseverity。在带有129708的第二个id中,内部有两个对象,每个对象都与计数2以及id一起打印。由于129709内部没有任何对象,因此在结果输出中完全忽略它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64243574

复制
相关文章

相似问题

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