Skip to main content
 首页 » 编程设计

python之遍历 json 对象以将根打印到以点分隔的子路径

2025年05月04日33Terrylee

所以直接进入问题。我有一些 json 对象,如下所示。

{ 
"root": { 
    "Child": { 
        "subChild": 10, 
        "subChild2": 20 
    }, 
    "Child2": { 
        "subChild2": 20, 
        "subChild3": 500 
    } 
} 

我想像这样打印输出:

[root.Child.subChild, 
root.Child.subChild2], 
 
[root.Child2.subChild2, 
root.Child2.subChild3] 

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)) 

输出:

['root.Child2.subChild3', 
 'root.Child2.subChild2', 
 'root.Child.subChild', 
 'root.Child.subChild2'] 

它可能不会涵盖所有极端情况,但这应该会让您朝着正确的方向前进。