所以我有这个json。我需要计算vulnerabilities[]数组中的元素数
{
"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": []
}我试过的是这个
jq '.' c.json | jq '{id: .dependencyId, vulnCount: .vulnerabilities[] | length}'结果:
{
"id": 129707,
"vulnCount": 2
}
{
"id": 129708,
"vulnCount": 2
}
{
"id": 129709,
"vulnCount": 2
}预期结果
{
"id": 129707,
"vulnCount": 1
}
{
"id": 129708,
"vulnCount": 2
}
{
"id": 129709,
"vulnCount": 0
}那么,如何根据数组中元素的数量从vulnerabilities[]获取漏洞的数量呢?
发布于 2020-10-07 12:08:28
您不需要单独调用jq。您可以这样做,如下所示,调用数组上的函数
{ id: .dependencyId, vulnCount: (.vulnerabilities|length) }您尝试的问题是[]公开数组中的所有对象,对象上的length函数计算给定对象中键/值对的数量。
129707中的对象有两个键/值对,键名为name和severity。在带有129708的第二个id中,内部有两个对象,每个对象都与计数2以及id一起打印。由于129709内部没有任何对象,因此在结果输出中完全忽略它。
https://stackoverflow.com/questions/64243574
复制相似问题