🧵 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() 才能显示正常汉字。

posted @ 2025-07-08 20:22  灵火  阅读(253)  评论(0)    收藏  举报