使用多个嵌套级别进行JSON解析

时间:2018-03-23 20:35:28

标签: python json

我们有多个嵌套级别的源JSON需要展平,然后插入到关系表中。

这里的问题是我们返回了多个具有不同嵌套级别的对象。我们正在寻找构建一个通用的JSON解析器,它可以展平任何JSON并插入到表中。

例如,类型1:

{
    "a": 1,
    "b": 2,
    "c": 3,
    "d": [
        {
            "a1": "i_1",
            "b1": "i_2"
        },
        {
            "a1": "j_1",
            "b1": "j_2"
        }
    ]
}

类型2:

{
    "a": 1,
    "b": 2,
    "d": [
        {
            "a1": 1,
            "b1": 2,
            "c1": [
                {
                    "a2": 1
                }
            ]
        }
    ]
}

我想设计一个黑盒子,我只需要输入JSON,可能会有几个参数将其展平,然后插入到Type 1和Type 2 Jsons的相应表中。是否可以在python函数中处理所有可能的情况

这是Type 1所需的示例输出 -

col a | col b | col c| col d_a1 | col d_b1

1          2      3       i_1        i_2
1          2      3       j_1        j_2 

1 个答案:

答案 0 :(得分:0)

你需要做一个递归函数。

def recursive_object_to_table(json, prefix=''):
    for key in json:
        new_key = prefix + key
        if type(json[key]) is not dict:
            if new_key not in table:
                table[new_key] = []
            table[new_key].append(json[key])
        else:
            recursive_object_to_table(json[key], new_key + '_')