![](/img/trans.png)
[英]How can I use jq to find all paths in a JSON object under which a value matches a given criteria?
[英]How to generate all JSON paths conditionally with jq
我任意嵌套了 JSON 個對象,如下所示。
{
"parent1" : "someval"`,
"parent2" : {
"a" : "someval",
"b" : "someval"
},
"parent3" : {
"child1" : {
"a" : "someval"
},
"child2" : {
"b" : "someval"
}
}
}
我需要通過它們遞歸 go 並檢查是否有任何父項具有子鍵a
或b
或兩者,並生成該父項的 JSON 路徑,如下所示:
Output:
parent2
parent3.child1
parent3.child2
我試過使用
jq -r 'path(..) | map (. | tostring) | join (".")
這有助於我生成所有路徑,但我還沒有找到一種方法來成功地將has("a")
等條件與path
結合起來。 我怎么能go一下實現呢?
您可以使用index
來檢查您的鍵是否在path
數組中:
path(..) | select(index("a") or index("b")) | join(".")
"parent2.a"
"parent2.b"
"parent3.child1.a"
"parent3.child2.b"
如果您不想要最后一個鍵,可以添加[:-1]
以“刪除”每個數組中的最后一個索引到 output:
path(..) | select(index("a") or index("b"))[:-1] | join(".")
"parent2"
"parent2"
"parent3.child1"
"parent3.child2"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.