json.dumps()的输出可能不符合我们的阅读习惯——这时候就需要用到参数来“美化”它。
二、参数 1:ensure_ascii=False
✅ 默认行为(不加这个参数):
json.dumps({"城市": "东京"}) # 输出:{"\u57ce\u5e02": "\u4e1c\u4eac"}你会看到中文变成了\uXXXX这样的Unicode 转义序列,人眼难以阅读。
这是因为json.dumps()默认只输出 ASCII 字符(即英文字母、数字、基本符号),非 ASCII 字符(如中文、日文、emoji)会被自动转义。
🔧 加上ensure_ascii=False后:
json.dumps({"城市": "东京"}, ensure_ascii=False) # 输出:{"城市": "东京"}✅ 中文直接显示为可读的汉字!
📌 教师小结:
ensure_ascii=True(默认):安全但不可读(适合机器传输)。ensure_ascii=False:保留原始 Unicode 字符(如中文),适合人类阅读和调试。- 在处理中文、日文等非英文内容时,一定要写
ensure_ascii=False!
三、参数 2:indent=2
✅ 默认行为(不加这个参数):
json.dumps([{"a": 1}, {"b": 2}]) # 输出:[{"a": 1}, {"b": 2}]所有内容挤在一行,结构混乱,难以看清嵌套关系。
🔧 加上indent=2后:
json.dumps([{"a": 1}, {"b": 2}], indent=2) # 输出: [ { "a": 1 }, { "b": 2 } ]✅ 自动换行 + 缩进,层次清晰,像写代码一样美观!
indent=2表示每层缩进用 2 个空格;- 你也可以写
indent=4(4 空格)、indent='\t'(制表符)等。
📌 教师小结:
indent参数用于格式化输出(pretty-print);- 数值越大,缩进越宽;
- 仅用于调试或展示,正式 API 传输时通常不用(节省带宽)。
四、合起来看
print(json.dumps(final_json, ensure_ascii=False, indent=2))这行代码的意思是:
“请把
final_json这个 Python 对象,转换成一段人类可读的 JSON 字符串:
- 中文不要转成 \u 编码,直接显示汉字;
- 用 2 个空格缩进,让结构清晰易读;
- 然后打印出来。”
✅ 举个完整例子
假设final_json是:
[ { "路线方案": "方案 1 (推荐路线)", "风险提示": "该食品运输路线可能经过福岛県" } ]加上这两个参数后,输出会是:
[ { "路线方案": "方案 1 (推荐路线)", "风险提示": "该食品运输路线可能经过福岛県" } ]而如果不加,可能会变成:
[{"\u8def\u7ebf\u65b9\u6848": "\u65b9\u6848 1 (\u63a8\u8350\u8def\u7ebf)", "\u98ce\u9669\u63d0\u793a": "\u8be5\u98df\u54c1\u8fd0\u8f93\u8def\u7ebf\u53ef\u80fd\u7ecf\u8fc7\u798f\u5cf6\u770c"}]