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