所以直接解决这个问题。我有一些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']


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

关于python - 遍历json对象以将根打印到以点分隔的子路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35619249/

10-12 07:35