在python中将新数据附加到json文件

时间:2017-11-30 16:18:28

标签: python json python-3.x dictionary

我在data.json文件中显示了json数组

[{"type": "Even", "id": 1}, {"type": "Odd", "id": 2}, {"type": "Even", "id": 3}]

我试图使用此代码将新数据附加到此json文件

    def foo(filename, dict_data):
    with open(filename, 'r') as json_data: 
        data = json.load(json_data)

    data.append(dict_data)

    with open(filename, 'w') as json_data: 
        json.dump(data, json_data)

    foo('data.json', lst)

但我得到了这个结果

[{"id": 1, "type": "Even"}, {"id": 2, "type": "Odd"}, {"id": 3, "type": "Even"}, [{"id": 4, "type": "Even new"}, {"id": 5, "type": "Odd new"}`]]

但这是一个无效的json数据。 我的预期数据

    [{"id": 1, "type": "Even"}, {"id": 2, "type": "Odd"}, {"id": 3, "type": "Even"}, {"id": 4, "type": "Even new"}, {"id": 5, "type": "Odd new"}`]

我做错了什么。?

1 个答案:

答案 0 :(得分:2)

您的变量dict_data看起来并不包含dictlist,而是dict.append。您在外listlist .extend,从而生成嵌套结构

如果是这种情况,那么只需使用list将原始list扩展为另一个data.extend(dict_data)

dict_data

考虑将变量dict的名称更改为更有意义的名称,因为阅读代码会让人感到困惑,因为它甚至不会保留{{1}}。