Python 中如何格式化(美化)打印 JSON 数据?
Python 美化打印 JSON:json.dumps(data, indent=4, ensure_ascii=False)。indent 控制缩进,ensure_ascii=False 保留中文。本文介绍完整用法。
核心方法:json.dumps(data, indent=4, ensure_ascii=False)。indent 控制缩进空格数(美化关键),ensure_ascii=False 让中文正常显示而不是转义成 \uXXXX。
从文件读取并美化
import json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
pretty = json.dumps(data, indent=4, ensure_ascii=False)
print(pretty)
常用参数
json.dumps(data,
indent=4, # 缩进 4 空格(美化关键)
ensure_ascii=False, # 保留中文等非 ASCII 字符
sort_keys=True, # 按键名排序(可选)
separators=(',', ': ') # 自定义分隔符(可选)
)
美化打印 API 返回的 JSON
import requests
import json
response = requests.get('https://api.example.com/data')
data = response.json()
print(json.dumps(data, indent=2, ensure_ascii=False))
命令行快速美化
不用写 Python 脚本,命令行直接美化:
python3 -m json.tool data.json
# 或管道
cat data.json | python3 -m json.tool
常见问题(FAQ)
Q:ensure_ascii=False 有什么风险?
A:某些旧系统只接受 ASCII 字符,这时需要保持默认 ensure_ascii=True(中文转为 \uXXXX)。现代系统基本无此问题。
Q:打印出来中文变成 \u4e2d\u6587?
A:加 ensure_ascii=False 参数。
Q:想要单行紧凑输出?
A:不加 indent 参数即可:json.dumps(data, ensure_ascii=False),或使用 separators=(',', ':') 进一步压缩空格。