json.dumps()可将字典转为JSON字符串,需确保数据类型合法;支持indent美化缩进、sort_keys排序、ensure_ascii=False显示中文;不支持日期等类型,需预处理或用default参数自定义序列化。
在 Python 中,用
把字典转成字符串非常直接,核心是确保字典里的数据类型是 JSON 支持的(比如字符串、数字、列表、字典、布尔值、
)。
基础用法:直接转换
只要字典只含合法类型,调用
就能返回一个格式化的 JSON 字符串:
让输出更易读:美化缩进
默认输出是紧凑的一行。加
参数可添加缩进,方便调试或保存到文件:
立即学习
“
Python免费学习笔记(深入)
”;
稿定在线PS
PS软件网页版
下载
→ 用 2 个空格缩进
→ 还会按键名排序,适合对比或版本控制
处理中文不乱码
默认情况下,中文会被转成 Unicode 转义(如
)。要显示原始中文,必须加参数
:
漏掉这个参数,中文就会变成乱码形式,看起来像一串 \u 开头的字符。
注意不支持的数据类型
不能直接处理日期、自定义类、集合、字节串等类型。遇到会报
。常见解决方式:
日期 → 先转成字符串:
或用
参数自定义序列化逻辑
自定义对象 → 在
函数里返回其字典表示,例如
(需确保属性都可 JSON 序列化)
集合(set)→ 先转成 list:
json.dumps()Nonejson.dumps()import json
data = {"name": "张三", "age": 28, "is_student": False, "hobbies": ["读书", "游泳"]}
json_str = json.dumps(data)
print(json_str)
输出:{"name": "张三", "age": 28, "is_student": false, "hobbies": ["读书", "游泳"]}
indentjson.dumps(data, indent=2)json.dumps(data, indent=4, sort_keys=True)"\u5f20\u4e09"ensure_ascii=Falsejson.dumps({"城市": "上海", "天气": "晴"}, ensure_ascii=False)
# 输出:{"城市": "上海", "天气": "晴"}
json.dumps()TypeErrorstr(datetime.now())defaultdefaultlambda obj: obj.__dict__list(my_set)