遍历json对象以打印root到子路径由dot分隔

时间:2016-02-25 05:40:39

标签: python json

所以直接面对这个问题。我有一些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对象可以有多个嵌套级别。

1 个答案:

答案 0 :(得分:4)

这应该做你想要的:

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']

它可能无法覆盖所有角落情况,但这应该让你朝着正确的方向前进。