所以直接解决问题。我有一些 json 对象,如下所示。
{
"root": {
"Child": {
"subChild": 10,
"subChild2": 20
},
"Child2": {
"subChild2": 20,
"subChild3": 500
}
}
Run Code Online (Sandbox Code Playgroud)
}
我想打印输出,如:
[root.Child.subChild,
root.Child.subChild2],
[root.Child2.subChild2,
root.Child2.subChild3]
Run Code Online (Sandbox Code Playgroud)
json 对象可以有多个嵌套级别。
这应该做你想做的:
def json_as_dotted_path(obj, path=''):
result = []
for key, value in obj.iteritems():
new_path = path + '.' + key if path else key
if isinstance(value, dict):
result.extend(json_as_dotted_path(value, path=new_path))
else:
result.append(new_path)
return result
json = {
"root": {
"Child": {
"subChild": 10,
"subChild2": 20
},
"Child2": {
"subChild2": 20,
"subChild3": 500
}
}
}
from pprint import pprint
pprint(json_as_dotted_path(json))
Run Code Online (Sandbox Code Playgroud)
这将输出:
['root.Child2.subChild3',
'root.Child2.subChild2',
'root.Child.subChild',
'root.Child.subChild2']
Run Code Online (Sandbox Code Playgroud)
它可能无法涵盖所有极端情况,但这应该会让您朝着正确的方向前进。