我有任意嵌套的 JSON 物件,如下所示。
{
"parent1" : "someval"`,
"parent2" : {
"a" : "someval",
"b" : "someval"
},
"parent3" : {
"child1" : {
"a" : "someval"
},
"child2" : {
"b" : "someval"
}
}
}
我需要遞回地遍歷它們并檢查是否有任何父級具有子鍵a或b,或兩者都有,并生成該父級的 JSON 路徑,如下所示:
Output:
parent2
parent3.child1
parent3.child2
我試過使用
jq -r 'path(..) | map (. | tostring) | join (".")
這有助于我生成所有路徑,但我還沒有找到一種方法來成功地結合has("a")條件path。我怎樣才能實作這一目標?
uj5u.com熱心網友回復:
你可以index用來檢查你的鍵是否在path陣列中:
path(..) | select(index("a") or index("b")) | join(".")
"parent2.a"
"parent2.b"
"parent3.child1.a"
"parent3.child2.b"
JqPlay 演示
如果您不想要最后一個鍵,您可以添加[:-1]到“洗掉”每個陣列中的最后一個索引以輸出:
path(..) | select(index("a") or index("b"))[:-1] | join(".")
"parent2"
"parent2"
"parent3.child1"
"parent3.child2"
JqPlay 演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/513505.html
標籤:json小路jq
上一篇:遍歷文本檔案并使用powershell將條目添加到JSON
下一篇:PHP中的JSON格式
