json - `select (. == ["a","b"][])` 谓词在 JQ 中如何工作?

标签 json jq

我正在寻找基于我作为文字提供的数组来选择 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/

相关文章:

javascript - 比较对象内的某些键、值对 - 无直接匹配 (JavaScript)

json - 如何使用 jq 查找 JSON 对象中值符合给定条件的所有路径?

php - json_encode 从 MSSQL-SELECT 生成 JSON_ERROR_UTF8

javascript - Json 上的 Switch 语句?

aws-cli - 将 JSON 解析为 jq 以从 AWS CLI 获取列表

json - 使用 jq 从数组中选择特定项目

jq - 如何在JQ中跳过迭代

json - 使用jq将带有换行符的文本文件转换为json

java - 使用 Gson 解析 JSON。没有键的困难 JSON 结构

java - 如何避免向 Jsonobject 添加重复条目