展平JSON对象中的数组

时间:2018-04-17 09:19:16

标签: python json

我有一个JSON对象,我想在将其导出为CSV之前将其展平。我想使用flatten_json模块。

我的JSON输入如下所示:

{
    "responseStatus": "SUCCESS",
    "responseDetails": {
        "total": 5754
    },
    "data": [
        {
            "id": 1324651
        },
        {
            "id": 5686131
        },
        {
            "id": 2165735
        },
        {
            "id": 2133256
        }
    ]
}

即使像我这样的初学者也很容易,但我在导出时感兴趣的只是数据阵列。所以,我会想到这个:

data_json = json["data"]
flat_json = flatten_json.flatten(data_json)

哪个不起作用,因为数据是一个数组,在Python中存储为列表,而不是字典:

[
    {
        "id": 1324651
    },
    {
        "id": 5686131
    },
    {
        "id": 2165735
    },
    {
        "id": 2133256
    }
]

我应该如何继续将数据数组的内容提供给flatten_json函数?

谢谢!

R上。

2 个答案:

答案 0 :(得分:0)

您可以在调用展平方法时选择要忽略的键。例如,在您的情况下,您可以执行以下操作。

flatten_json.flatten(dic, root_keys_to_ignore={'responseStatus', 'responseDetails'})

其中dic是原始JSON输入。

这将作为输出:

{'data_0_id': 1324651, 'data_1_id': 5686131, 'data_2_id': 2165735, 'data_3_id': 2133256}

答案 1 :(得分:0)

这个函数需要一个ditionary,让我们通过一个:

flat_json = flatten_json.flatten({'data': data_json})

输出:

{'data_0_id': 1324651, 'data_1_id': 5686131, 'data_2_id': 2165735, 'data_3_id': 2133256}