最後更新日期:2025 年 03 月 23 日
我們可以使用 json.dumps() 將資料轉化成 json 格式,並加上 indent 參數,使其以比較好看的方式顯示。
import json
data = [{'name': "Jonh", "age": 19}, {'name': 'Mary', 'age': 21}]
print(data)
print(json.dumps(data, indent=2))
這在英文資料時,沒有什麼問題,以下是其顯示的結果
[{'name': 'Jonh', 'age': 19}, {'name': 'Mary', 'age': 21}]
[
{
"name": "Jonh",
"age": 19
},
{
"name": "Mary",
"age": 21
}
]
但是如果資料裏有中文的話,狀況就有點不同
import json
data = [{'name': "張三", "age": 19}, {'name': '李四', 'age': 21}]
print(data)
print(json.dumps(data, indent=2))
其執行結果如下:
[{'name': '張三', 'age': 19}, {'name': '李四', 'age': 21}]
[
{
"name": "\u5f35\u4e09",
"age": 19
},
{
"name": "\u674e\u56db",
"age": 21
}
]
python 會將中文資料以 utf-8 編碼的方式顯示。
這其實在使用上沒什麼問題,但是如果我們想要他以中文的方式顯示,要如何做呢?
我們可以這樣處理
mport json
data = [{'name': "張三", "age": 19}, {'name': '李四', 'age': 21}]
print(data)
print(json.dumps(data, indent=2, ensure_ascii=False).encode('utf-8').decode())
輸出結果如下:
[{'name': '張三', 'age': 19}, {'name': '李四', 'age': 21}]
[
{
"name": "張三",
"age": 19
},
{
"name": "李四",
"age": 21
}
]
ensure_ascii 這個值,預設是 True,也就是讓函式執行的結果,要確定可以用 ascii 編碼來表示。
參考資料
https://docs.python.org/zh-tw/3.13/library/json.html
https://zhuanlan.zhihu.com/p/37504880
Comments