[英]Get unique nested JSON keys with JQ
如何使用 JQ 從屬性鍵中獲取唯一鍵
{"id":1, "attributes":{"a": 1, "b": 2, "c": 3}}
{"id":2, "attributes":{"a": 4, "b": 5, "d": 6}}
{"id":3, "name":"ABC"}
像這樣的結果 [ "a", "b", "c", "d" ]
我正在嘗試這樣
jq '.attributes' test.json | jq -r '[inputs | keys[]] | unique | sort'
或者
jq -r '[inputs.attributes | keys[]] | unique | sort' test.json
但出現錯誤
jq: 錯誤 (at:11): null (null) has no keys
一種方法是在后續inputs
上使用reduce
:
jq 'reduce inputs.attributes as $a (.attributes; . + $a) | keys'
[
"a",
"b",
"c",
"d"
]
按照您的第二次嘗試:
jq -n '[inputs.attributes // empty | keys_unsorted[]] | unique'
重要的一點是我們必須處理沒有“屬性”鍵的情況。
還要注意unique
排序,所以(除非你使用 gojq)我們可以使用keys_unsorted
來避免冗余排序。
啜飲:
jq -s 'map(.attributes|keys?)|add|unique' test.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.