import json
data = [{
'name': 'Bob',
'gender': 'male',
'birthday': '1992-10-18'
}]
with open('data.json', 'w', encoding='utf-8') as file:
file.write(json.dumps(data))
运行效果如下:

关键知识点:
json.dumps用法
json.dumps() 是 Python 标准库 json 模块中的一个函数,用于将 Python 对象 (如字典、列表等)序列化为 JSON 格式的字符串。这个过程也叫"编码"(encoding)。
🔧 基本语法:
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw)
最常用的是前几个参数,我们重点看:
| 参数 | 说明 |
|---|---|
obj |
要转换的 Python 对象(如 dict、list、str、int 等) |
indent |
格式化输出时的缩进空格数(例如 indent=2),便于阅读 |
ensure_ascii |
默认为 True,非 ASCII 字符(如中文)会被转义;设为 False 可保留原字符 |
sort_keys |
是否对字典的键进行排序(默认 False) |
separators |
控制分隔符,如 (',', ':') 可减少输出体积 |
✅ 示例 1:基本用法
import json
data = {'name': '张三', 'age': 25}
json_str = json.dumps(data)
print(json_str)
# 输出: {"name": "\u5f20\u4e09", "age": 25} (中文被转义)
✅ 示例 2:保留中文(不转义)
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
# 输出: {"name": "张三", "age": 25}
✅ 示例 3:格式化输出(带缩进)
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)
输出:
{
"name": "张三",
"age": 25
}
✅ 示例 4:写入文件(配合 open)
虽然你可以用 file.write(json.dumps(data)),但更推荐使用 json.dump() 直接写入:
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
注意区别:
json.dumps()→ 返回 字符串json.dump()→ 直接将对象 写入文件
⚠️ 支持的数据类型
json.dumps() 只能处理以下 Python 类型:
dict→ JSON objectlist,tuple→ JSON arraystr→ JSON stringint,float→ JSON numberTrue/False→true/falseNone→null
如果包含 datetime、自定义类等,会报错,需通过 default 参数处理。
✅ 处理不支持的类型(如 datetime)
from datetime import datetime
import json
def serialize(obj):
if isinstance(obj, datetime):
return obj.isoformat()
raise TypeError("Type not serializable")
data = {'time': datetime.now()}
json_str = json.dumps(data, default=serialize, ensure_ascii=False)
print(json_str)