我正在寻找基于我作为文字提供的数组来选择 JSON 条目的方法:
$ echo '["a","b","c","d"]' | jq '.[] | select (. == ["a","b"][] )'
"a"
"b"
在上面的代码中,选择了 ["a","b"]
数组中的所有条目。但是,我不明白 . == ["a","b"][]
谓词的工作原理很详细,如果有解释,我们将不胜感激。棘手的部分是 ==
的右侧。
相关:
最佳答案
这里理解的关键是jq是面向流的。 ["a","b"][]
生成一个流,因此 。 == ["a","b"][]
生成一个流。 select
选择在该流中产生真实值的项目。
要了解 jq 的工作原理,将事情分开通常会有所帮助。在本例中,您可以首先尝试:
echo '["a","b","c","d"]' | jq '.[] | (. == ["a","b"][])'
调试
也很有帮助,例如
echo '["a","b","c","d"]' | jq '.[] | select(debug == ["a","b"][])'
关于json - `select (. == ["a","b"][])` 谓词在 JQ 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995429/