我有一个数组,我需要检查该数组中是否存在元素,或者使用以下方法从数组中获取该元素 jq, fruit.json:
{
"fruit": [
"apple",
"orange",
"pomegranate",
"apricot",
"mango"
]
}
cat fruit.json | jq '.fruit .apple'
不工作
最佳答案
“包含”的语义一点也不简单。一般来说,最好使用'index'来测试数组是否具有特定值,例如
.fruit | index( "orange" )
但是,如果感兴趣的项目本身是一个数组,一般形式:
ARRAY | index( [ITEM] )
应该使用,例如:
[1, [2], 3] | index( [[2]] ) #=> 1
输入/1
如果您的 jq 有 IN/1
那么更好的解决方案是使用它:
.fruit as $f | "orange" | IN($f[])
如果您的 jq 有 first/1
(就像 jq 1.5 一样),那么这里是要使用的 IN/1
的快速定义:
def IN(s): first((s == .) // empty) // false;
任意(_;_)
另一种有时更方便的有效替代方法是使用any/2
,例如
any(.fruit[]; . == "orange")
或等同于:
any(.fruit[] == "orange"; .)
关于arrays - 如何使用jq检查数组中是否存在元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43259563/