json.dumps(data.__dict__) 會把中文字元轉義為 Unicode 碼點

jarico發表於2024-09-09

在 Python 中,json.dumps() 函式會將 Python 物件序列化為 JSON 字串,並預設使用 UTF-8 編碼來處理非 ASCII 字元。雖然在 Python 3 中,字串是預設以 Unicode 形式儲存的,但是當 json.dumps() 將 Python 字串轉換為 JSON 格式時,非 ASCII 字元會自動被轉義為 Unicode 碼點(例如 \uXXXX)。

這是 json.dumps() 預設行為之一,目的是確保生成的 JSON 資料是有效的 ASCII 字串,因此它會將非 ASCII 字元(例如中文)轉為 Unicode 轉義序列(如 \u4e2d 表示中文字元 "中")。

如果你希望避免這種 Unicode 轉義並直接輸出原始字串,可以使用 ensure_ascii=False 引數。例如:

import json

data = {
    "name": "中文字元"
}

# 序列化時避免 Unicode 轉義
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

輸出結果:

{"name": "中文字元"}

[!TIP]

ensure_ascii=False 的作用就是確保 json.dumps() 不會將非 ASCII 字元轉義為 Unicode 編碼,直接保留原始字元。

相關文章