是否有更好的方法来解析API响应,而我不知道可以进入多少嵌套字典?
API响应的更改现在会引发嵌套字典。获取响应的所有代码都是基于字典的。
我发现了一种可怕的方法,但是有时我会得到5级嵌套字典.....
示例响应示例:
"MalwareProtectionStatus": "disabled","malware": {
"Quarantinestatus": "Disabled","config": {
"av": {
"status": "Disabled","quarantine": {
"status": "Disabled"
}
},"mg": {
"status": "Disabled","quarantine": {
"status": "Disabled"
}
}
}
}
我准备了带有输入数据的代码,就像真正的一种结构一样。但这是一种可怕的方法,并且如果API响应获得更多级别的嵌套字典。...那么...需要更多可怕的代码,请看一下...。
我的糟糕代码(为了更好地理解而进行了编辑):
def flatted(_key,_value):
flatted_rslt = {}
for k,v in _value.items():
flatted_rslt.update({f'{_key}_{k}': v})
return flatted_rslt
def parse_to_flat(_api_response):
result = {}
for key,value in _api_response.items():
if isinstance(value,dict):
result.update(flatted(key,value))
else:
result.update({key: value})
return result
if __name__ == '__main__':
api_response = {'level-a1': '1','level-a2': {'level-b1': '21','level-b2': {'level-c1': '31','level-c2': {'level-d1': '41'}}}}
# flattening level 1
parsed_api_response_level_1 = parse_to_flat(api_response)
print(parsed_api_response_level_1)
# flattening level 2
parsed_api_response_level_2 = parse_to_flat(parsed_api_response_level_1)
print(parsed_api_response_level_2)
# flattening level 3
parsed_api_response_level_3 = parse_to_flat(parsed_api_response_level_2)
print(parsed_api_response_level_3)
代码抛出:
{'level-a1': '1','level-a2_level-b1': '21','level-a2_level-b2': {'level-c1': '31','level-c2': {'level-d1': '41'}}}
{'level-a1': '1','level-a2_level-b2_level-c1': '31','level-a2_level-b2_level-c2': {'level-d1': '41'}}
{'level-a1': '1','level-a2_level-b2_level-c2_level-d1': '41'}
它可以工作...但是只有当我知道嵌套字典的级别时,有时我才看到5个级别...
有什么更好的方法吗????