簡體   English   中英

使用 JQ 獲取唯一的嵌套 JSON 密鑰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM