如何使用jq统计JSON中嵌套数字键数组元素的总数量?
使用jq统计指定JSON结构的数组元素总数
示例JSON结构
{ "main":[ { "0":[ {"0":"..."},{"1":"..."},{"2":"..."},{"3":"..."} ] }, { "1":[ {"0":"..."},{"1":"..."},{"2":"..."} ] }, { "2":[ {"0":"..."},{"1":"..."},{"2":"..."},{"3":"..."},{"4":"..."} ] } ] }
实现方法
完全可以用jq实现需求,以下是不同场景的命令:
1. 单独输出每个数字键对应的元素数量
执行命令:
.main[] | to_entries[] | "\(.key): \(.value | length)"
输出结果:
"0: 4" "1: 3" "2: 5"
2. 直接输出总元素数量
执行命令:
[.main[] | to_entries[] | .value | length] | add
输出结果:
12
3. 同时输出每个键的计数和总数量(结构化结果)
执行命令:
( .main[] | to_entries[] | {key: .key, count: .value | length} ) as $items | {items: $items, total: ($items | map(.count) | add)}
输出结果:
{ "items": [ { "key": "0", "count": 4 }, { "key": "1", "count": 3 }, { "key": "2", "count": 5 } ], "total": 12 }
命令说明
.main[]:遍历main数组中的每个子对象to_entries[]:将每个子对象转换为键值对结构(格式为{key: "键名", value: "对应值"}).value | length:获取每个键对应数组的元素个数[... ] | add:将所有数组长度存入数组后,求和得到总数量
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

