🧵 requests 获取 JSON 返回 Unicode 转义字符问题及解决方案
在使用 Python 的 requests 库请求某个接口时,我遇到了一个常见但容易忽略的问题:返回的 JSON 数据中包含 Unicode 转义字符,例如:
{"status":1,"data":"\u5e93\u5b58\u4e0d\u8db3"}
虽然响应内容是合法的 JSON,但字段中的中文被转义成了类似 \u620f\u5267 的形式,看起来很不直观。
问题原因
服务器返回的是字符串形式的 JSON,其中某些字段的内容本身也是一段 JSON 字符串,并且里面的中文字符被转义了。例如:
{
"status": 1,
"data": "\u5e93\u5b58\u4e0d\u8db3"
}
requests 的 response.json() 方法会自动解码第一层 JSON,但如果你打印 response.text,只是原始文本,不会自动转换 Unicode 编码为中文。
解决方案
方案一:使用 json() 提取字段内容(推荐)
res_json = response.json()
print(res_json["data"]) # 输出已解析的中文内容
方案二:手动解码 Unicode 字符串(只想看 text)
res_text = response.text
print(res_text.encode("utf-8").decode("unicode_escape"))
这条语句可以将字符串中的 Unicode 转义字符转换为可读的中文字符。
小结
服务器返回的 JSON 数据中某些字段是带有 Unicode 转义字符的字符串,直接打印 response.text 不会自动将其转换为中文,需手动解码或使用 .json() 才能显示正常汉字。

浙公网安备 33010602011771号