【发布时间】:2021-02-12 18:56:25
【问题描述】:
我想过滤某个键的所有值,然后对它们的数组应用进一步的计算,例如总结一下。
{
"v": 0,
"child": {
"v": 2,
"child": {
"v": 3,
"child": {
"v": null
}
},
"list": [{"v":4}]
}
}
直觉上我尝试jq '..|.v? | add' 并期待9 但得到一个错误:
jq: error (at <stdin>:12): Cannot iterate over number (0)
exit status 5
所以我猜它会将第一个元素视为一个数组,而不是将所有过滤后的值视为一个数组。
使用jq '..|.v?' 我可以将它们打印出来:
0
2
3
null
null
4
但它们似乎不是一个数组(因为 'echo "[0,2,3,null,null,4]" | jq 'add'' 有效)。
那么jq '..|.v?' 的结果的“类型”是什么,如何将其视为数组?
【问题讨论】:
-
@oguzismail 我猜对我来说不是很明显,谢谢!