【发布时间】:2020-12-16 10:17:34
【问题描述】:
我正在使用大型嵌套 json,需要收集所有 Json 键以列出, 即:
对于 json:
{"taxIncludedAmount":{},"impactingPriceParameter":[{}],"extensions":{"additionalProp1":{}}}}
我想收集一份清单的钥匙, 并添加括号,以便我知道密钥的类型。 所以对于上面的json我想得到(包括正确的顺序):
eventType
event{}.dataStrategy
event{}.error{}.code
event{}.error{}.characteristics[].name
我设法使用找到的一些代码示例获取所有密钥, 但是很难找到一种方法来为 dic 添加方括号 {} 为列表添加 []。
代码:
def get_keys(d, curr_key=[]):
for k, v in d.items():
if isinstance(v, dict):
yield from get_keys(v, curr_key + [k])
elif isinstance(v, list):
for i in v:
yield from get_keys(i, curr_key + [k])
else:
yield '.'.join(curr_key + [k])
def main():
array_json_keys = [*get_keys(json_data)]
输出:
event.dataStrategy
event.error.characteristics.name
event.error.code
eventType
这是“差不多了,我需要添加方括号({} 表示 dic ,[] 表示数组) 另外我想对其进行排序,以便首先显示第一级对象。
更新:
感谢@blhsing - 它解决了括号, 由于某种原因,它在示例中跳过了空键
"impactingPriceParameter": [
{}
]
or
"extensions": {
"additionalProp1": {}
}
【问题讨论】: