相关疑难解决方法(0)

使用jq基于对象中变量的值选择对象

我有以下json文件:

{
    "FOO": {
        "name": "Donald",
        "location": "Stockholm"
    },
    "BAR": {
        "name": "Walt",
        "location": "Stockholm"
    },
    "BAZ": {
        "name": "Jack",
        "location": "Whereever"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用jq并希望得到'location'为'Stockholm'的对象的"名称"元素.

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

cat json | jq .[] | jq ."name"
"Jack"
"Walt"
"Donald"
Run Code Online (Sandbox Code Playgroud)

但考虑到子键的值(这里"location" : "Stockholm"),我无法弄清楚如何只打印某些对象.

bash json jq

202
推荐指数
4
解决办法
18万
查看次数

如何使用jq查找某个键的所有路径

在一个非常大的嵌套json结构中,我试图找到以键结尾的所有路径.

例如:

{
  "A": {
    "A1": {
      "foo": {
        "_": "_"
      }
    },
    "A2": {
      "_": "_"
    }
  },
  "B": {
    "B1": {}
  },
  "foo": {
    "_": "_"
  }
}
Run Code Online (Sandbox Code Playgroud)

将按以下方式打印:["A","A1","foo"],["foo"]


不幸的是,我不知道键的嵌套级别会出现什么级别,因此我无法通过简单的选择来解决问题.我已经接近了jq '[paths] | .[] | select(contains(["foo"]))',但输出包含任何包含foo的树的所有排列.输出:["A", "A1", "foo"]["A", "A1", "foo", "_"]["foo"][ "foo", "_"]

如果我可以保留原始数据结构格式但只是过滤掉所有不包含密钥的路径(在这种情况下,"foo"下的子树不需要隐藏),则可以获得奖励积分.

json key extract jq

7
推荐指数
1
解决办法
3583
查看次数

按键递归搜索值

我有一个像这样的JSON:

{ 
  "A": { "error": null },
  "B": { "C": {"error": "error string"}},
  "C": { "D": {"error": null}},
  "D": { "error": "err str"}
}
Run Code Online (Sandbox Code Playgroud)

结束我想找到非错误键的所有值.

对于我的例子,它应该返回

"error string"
"err str"
Run Code Online (Sandbox Code Playgroud)

我该怎么做?有没有可能与jq

bash json jq

6
推荐指数
1
解决办法
3734
查看次数

标签 统计

jq ×3

json ×3

bash ×2

extract ×1

key ×1