小编lem*_*lem的帖子

如何使用 jq 有条件地生成所有 JSON 路径

我有任意嵌套的 JSON 对象,类似于下面的内容。

{
  "parent1" : "someval"`,
  "parent2" : {
     "a" : "someval",
     "b" : "someval"
   },
  "parent3" : {
     "child1" : { 
        "a" : "someval"
      },
     "child2" : { 
        "b" : "someval"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我需要递归地遍历它们并检查是否有任何父项有子键ab或两者,并生成该父项的 JSON 路径,如下所示:

Output:
parent2 
parent3.child1
parent3.child2
Run Code Online (Sandbox Code Playgroud)

我尝试过使用

jq -r 'path(..) | map (. | tostring) | join (".")
Run Code Online (Sandbox Code Playgroud)

这可以帮助我生成所有路径,但我还没有找到一种方法来成功地组合诸如 之类的has("a")条件path。我怎样才能实现这一目标?

json path jq

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

标签 统计

jq ×1

json ×1

path ×1