基于python属性展平JSON

2024-09-26 18:01:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个json数组:

[
    {
        'id': 1,
        'values': [
            {
                'cat_key': 'ck1'
            },
            {
                'cat_key': 'ck2'
            }
        ]
    },
    {
        'id': 2,
        'values': [
            {
                'cat_key': ck3
            }
        ]
    }
]

我想在values字段上展平此数组,以便:

[
    {
        'id': 1,
        'cat_key': 'ck1'
    },
    {
        'id': 1,
        'cat_key': 'ck2'
    },
    {
        'id': 2,
        'cat_key': 'ck3'
    }
]

在python中最有效的方法是什么?你知道吗


Tags: 方法keyidjson数组catvaluesck1
2条回答

您的JSON在技术上是无效的,但假设它是有效的,并且可以作为list使用:

out = []
for d in your_json:
    for v in d.get('values', []):
        out.append({'id': d['id'], 'cat_key': v['cat_key']})
print json.dumps(out)

结果:

[{"id": 1, "cat_key": "ck1"}, {"id": 1, "cat_key": "ck2"}, {"id": 2, "cat_key": "ck3"}]
obj = json.loads(json_array)
new_obj = [] 
for d in obj:
    if d.get('values'):
        for value in d['values']:
            new_obj.append(dict(id=d['id'],cat_key=value['cat_key']))
new_json = json.dumps(new_obj)

相关问题 更多 >

    热门问题