我正在寻找基于我作为文字提供的数组选择JSON条目的方法:
$ echo '["a","b","c","d"]' | jq '.[] | select (. == ["a","b"][] )'
"a"
"b"
在上面的代码中,选择了["a","b"]
数组中的所有条目。但是,我不明白. == ["a","b"][]
谓词的详细信息是如何工作的,并且会对解释感激不尽。棘手的部分是==
的右侧。
相关:
答案 0 :(得分:2)
理解这里的关键是jq是面向流的。 ["a","b"][]
生成一个流,ergo . == ["a","b"][]
生成一个流。 select
选择在该流中生成真值的项目。
要了解jq的工作原理,通常可以将事情分开。在目前的情况下,您可以尝试:
echo '["a","b","c","d"]' | jq '.[] | (. == ["a","b"][])'
debug
也很有用,例如
echo '["a","b","c","d"]' | jq '.[] | select(debug == ["a","b"][])'