You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6 API输出JSON时如何生成无双反斜杠的Unicode字符串

解决Python JSON输出中Unicode转义字符的双反斜杠问题

首先咱们理清问题根源:你当前代码里的b"\u003chead\u003e"写法是错误的——\uXXXX是字符串(str)专属的Unicode转义序列,不能直接用在字节串(bytes)里。当你这么写时,Python会先把\u003c解析成字符<,再编码成字节串,所以b"\u003chead\u003e".decode('utf-8')实际得到的就是普通字符串<head>,后续json.dumps的行为可能让你产生了误解。

你看到的\\u003chead\\u003e其实是Python对JSON字符串的打印显示形式(Python会自动转义反斜杠方便你查看),而非实际输出的JSON内容。如果把这个JSON字符串写入文件或发送给Android应用,接收方看到的会是\u003chead\u003e(单反斜杠),这完全符合JSON标准,解析后就是<head>字符。

不过如果你确实想要让json.dumps直接输出\u003c这类转义形式,或者彻底避免双反斜杠的显示,这里有两种靠谱的解决方案:

方案1:修正字符串创建方式,直接使用实际字符

如果你最终需要的是<head>这个Unicode字符串,直接用普通字符串赋值即可,json.dumps默认会正确处理:

import json
abc = {"me": "<head>"}
result = json.dumps(abc)
print(result)  # 输出: {"me": "<head>"}

如果你的原始数据确实是字节串,用正确的字节串写法:

# 直接写入可见字符的字节串
abc = {"me": b'<head>'.decode('utf-8')}
# 或者用十六进制转义的字节串
abc = {"me": b'\x3chead\x3e'.decode('utf-8')}

方案2:强制JSON输出Unicode转义形式

如果你需要JSON中明确显示\u003c这类转义(而非直接的<),可以自定义一个JSON编码器,重写字符串的编码逻辑:

import json

class UnicodeEscapeEncoder(json.JSONEncoder):
    def encode(self, obj):
        # 先调用默认编码得到基础字符串
        encoded = super().encode(obj)
        # 将<和>替换为对应的Unicode转义序列
        encoded = encoded.replace('<', r'\u003c').replace('>', r'\u003e')
        return encoded

abc = {"me": "<head>"}
result = json.dumps(abc, cls=UnicodeEscapeEncoder)
print(result)  # 输出: {"me": "\u003chead\u003e"}

注意:Python打印时可能还是会显示\\u003c,但实际字符串内容是单反斜杠。你可以通过写入文件验证:

with open('output.json', 'w', encoding='utf-8') as f:
    f.write(result)

打开output.json文件,就能看到正确的\u003chead\u003e,没有多余的双反斜杠。

内容的提问来源于stack exchange,提问作者mambo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:22:49