json - 使用jq根据对象中变量的值选择对象

我有以下 json 文件:

{
    "FOO": {
        "name": "Donald",
        "location": "Stockholm"
    },
    "BAR": {
        "name": "Walt",
        "location": "Stockholm"
    },
    "BAZ": {
        "name": "Jack",
        "location": "Whereever"
    }
}

我正在使用 jq 并希望获取“位置”为“斯德哥尔摩”的对象的“名称”元素。

我知道我可以得到所有的名字

cat json | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"

但我不知道如何只打印某些对象,给定子键的值(此处:"location": "Stockholm")。

最佳答案

改编自 Processing JSON with jq 上的这篇文章,您可以使用 select(bool)像这样:

$ jq '.[] | select(.location=="Stockholm")' json
{
  "location": "Stockholm",
  "name": "Walt"
}
{
  "location": "Stockholm",
  "name": "Donald"
}

https://stackoverflow.com/questions/18592173/

相关文章:

java - 如何指定 jackson 只使用字段 - 最好是全局

json - HTTP 中的 "406-Not Acceptable Response"是什么?

python - 将 JSON 字符串转换为字典未列出

java - 在 Java 中使用 JSON 的 HTTP POST

json - 如何通过 JSON 文件传递​​有效载荷以进行 curl?

python - NumPy 数组不是 JSON 可序列化的

json - JSON 语法是否允许对象中有重复的键?

json - 如何使用 JSON 对象初始化 TypeScript 对象?

javascript - 将带有数字键的 JavaScript 对象转换为数组

python - 让 JSON 对象接受字节或让 urlopen 输出字符串