所以我对 jq 有这样的输入:
[
"foo",
{
"a": 1,
"b": 2
},
{
"a": 1,
"b": 3
},
{
"a": 2,
"b": 2
}
]
我想选择 b 为 2 的所有对象作为数组:
[
{
"a": 1,
"b": 2
},
{
"a": 2,
"b": 2
}
]
但是列表中的字符串让这变得困难。
如果我尝试:
.[]|选择(.b == 2)
然后我得到错误:
jq:错误(位于/tmp/data.json:14):无法用字符串“b”索引字符串
有什么帮助吗?
最佳答案
其他答案建议使用 ?
这很好。另一种方法是使用内置的 objects
过滤器,它会丢弃不是对象的输入:
map(objects | select(.b == 2))
# ^^^^^^^ ^^^^^^^^^^^^^^^
# A B
A:过滤掉非对象
B:此时,我们正在处理对象
稍微更冗长但效率可能更低?
关于json - 如何使用 jq 过滤包含对象和字符串的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67624282/