默认情况下,当对象属性包括 Unicode 或非 ASCII 字符串时,使用 Python 的 JSON 模块进行 JSON 序列化,会将这些字符串转换为 \u 转义序列。这个转义序列由一个反斜杠(\)和一个 u 以及四个十六进制数字组成,代表该字符的 Unicode 码位。

例如,下面示例代码中,将字典对象 my_dict 序列化成 JSON 字符串后,zh 字段的值变为 \u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528Python\u3002

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import json

# 定义一个字典对象
my_dict = {
"zh": "人生苦短,我用Python。",
"en": "Life is short, use Python."
}

# 使用 json.dumps() 方法将字典对象序列化为 JSON 字符串
json_str = json.dumps(my_dict)

# 打印 JSON 字符串
print(json_str)

"""
Output:
{"zh": "\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528Python\u3002", "en": "Life is short, use Python."}
"""

如果要保留字符串原样输出,使用 json.dumps() 方法时需要传入 ensure_ascii=False 参数来保留 Unicode 字符。

具体示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import json

# 定义一个字典对象
my_dict = {
"zh": "人生苦短,我用Python。",
"en": "Life is short, use Python."
}

# 使用 json.dumps() 方法将字典对象序列化为 JSON 字符串
json_str = json.dumps(my_dict, ensure_ascii=False)

# 打印 JSON 字符串
print(json_str)

"""
Output:
{"zh": "人生苦短,我用Python。", "en": "Life is short, use Python."}
"""

(END)