我在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"}`]
我做错了什么。?
答案 0 :(得分:2)
您的变量dict_data
看起来并不包含dict
个list
,而是dict
个.append
。您在外list
内list
.extend
,从而生成嵌套结构
如果是这种情况,那么只需使用list
将原始list
扩展为另一个data.extend(dict_data)
:
dict_data
考虑将变量dict
的名称更改为更有意义的名称,因为阅读代码会让人感到困惑,因为它甚至不会保留{{1}}。