一尘不染

如何使用jq检查元素是否存在于数组中

json

我有一个数组,我需要检查该数组中是否存在元素,或者使用jq, fruit.json 从数组中获取该元素:

{
    "fruit": [
        "apple", 
        "orange",
        "pomegranate",
        "apricot",
        "mango"
    ]
}


cat fruit.json | jq '.fruit .apple'

不起作用


阅读 219

收藏
2020-07-27

共1个答案

一尘不染

“包含”的语义一点都不简单。通常,最好使用“索引”来测试数组是否具有特定值,例如

.fruit | index( "orange" )

IN / 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;
2020-07-27