使用python递归解析复杂的api json数据

时间:2019-04-07 13:10:20

标签: python json rest recursion

以键作为输入并在整个json数据中搜索该键并返回该键的键值对列表的方法

此方法对于普通键值对area()来说工作正常,但是如果键的值是列表或字典{'key':'some value'},则返回空列表

{'keya':[1,2,3]}

1 个答案:

答案 0 :(得分:0)

如果给定对象是字典,则可以使用一个函数,如果给定键在字典中存在,则产生该值,然后递归地从dict值中产生,或者从列表项产生,如果对象是列表:

def extract(obj, key):
    if isinstance(obj, dict):
        if key in obj:
            yield obj[key]
        for k, v in obj.items():
            yield from extract(v, key)
    elif isinstance(obj, list):
        for i in obj:
            yield from extract(i, key)

所以给定:

d = {
    'a': [1, 2, 3],
    'b': {'a': 'c'},
    'c': [
        {'a': 'd'},
        {'b': 'e'}
    ]
}

list(extract(d, 'a'))返回:

[[1, 2, 3], 'c', 'd']