Python 中如何格式化(美化)打印 JSON 数据?

Python 美化打印 JSON:json.dumps(data, indent=4, ensure_ascii=False)。indent 控制缩进,ensure_ascii=False 保留中文。本文介绍完整用法。

最佳实践
Python 中如何格式化(美化)打印 JSON 数据?封面

核心方法: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=(',', ':') 进一步压缩空格。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台