Ras*_*san 5 python json dictionary python-3.x
我在data.json文件中有下面的json数组
[{"type": "Even", "id": 1}, {"type": "Odd", "id": 2}, {"type": "Even", "id": 3}]
Run Code Online (Sandbox Code Playgroud)
我试图使用此代码将新数据追加到此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)
Run Code Online (Sandbox Code Playgroud)
但我得到这个结果
[{"id": 1, "type": "Even"}, {"id": 2, "type": "Odd"}, {"id": 3, "type": "Even"}, [{"id": 4, "type": "Even new"}, {"id": 5, "type": "Odd new"}`]]
Run Code Online (Sandbox Code Playgroud)
但这是无效的json数据。 我的预期数据是
[{"id": 1, "type": "Even"}, {"id": 2, "type": "Odd"}, {"id": 3, "type": "Even"}, {"id": 4, "type": "Even new"}, {"id": 5, "type": "Odd new"}`]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么。?
看起来您的变量dict_data
不包含单个dict
,而是list
包含dict
a 。你将.append
它放在list
outer内部list
,从而生成一个嵌套结构
如果是这种情况,那么只需使用另一个来.extend
扩展原始的:list
list
data.extend(dict_data)
Run Code Online (Sandbox Code Playgroud)
考虑将变量的名称更改dict_data
为更有意义的名称,因为它甚至不包含dict
.