You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python嵌套字典以字典而非字符串形式存入JSON文件?

解决Python嵌套字典存入JSON后子字典变为字符串的问题

问题现象

你定义了嵌套字典dict = {"fadfafa": {"price": 5}},使用json.dump()写入JSON文件后,文件内容显示为{"fadfafa":"{\"price\" : 5}"},子字典被转为字符串;用json.load()读取时,该值仍为字符串而非嵌套字典。你的示例代码存在语法错误,这是导致问题的核心原因。

正确的写入代码

json.dump()需要传入两个必填参数:待序列化的对象和打开的文件对象,同时文件需以**写入模式(w)**打开。另外,避免用dict作为变量名(会覆盖Python内置的字典类型),正确代码如下:

import json
# 用更合理的变量名替代dict
data = {"fadfafa": {"price": 5}}
# 以写入模式打开文件,指定utf-8编码避免乱码
with open('temp.json', 'w', encoding='utf-8') as output_file:
    json.dump(data, output_file)

执行后,JSON文件内容会是正确的嵌套结构:

{"fadfafa": {"price": 5}}

正确的读取代码

你的读取代码存在语法错误,正确的读取方式只需传入打开的文件对象即可,json.load()默认会将JSON嵌套结构恢复为Python的嵌套字典:

import json
with open('temp.json', 'r', encoding='utf-8') as input_file:
    loaded_data = json.load(input_file)
# 验证子字典类型,会输出 <class 'dict'>
print(type(loaded_data["fadfafa"]))

关键注意事项

  • 禁止使用dict作为变量名,避免覆盖Python内置的dict类型,引发不必要的bug。
  • 操作文件时必须指定正确的模式:写入用w,读取用r,推荐显式指定编码(如utf-8)。
  • json.dump()默认支持嵌套字典的序列化,无需额外配置钩子参数,仅在处理自定义类等特殊类型时才需要自定义钩子。

内容的提问来源于stack exchange,提问作者Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:15:33