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

Python解码含单个反斜杠的JSON失败,如何解决?

问题原因及解决方法

错误原因

  1. JSON规范限制:JSON字符串里的反斜杠\是专用转义字符,仅允许用于转义特定合法字符(比如\"、\\、\n等),\C属于无效转义序列,不符合JSON官方标准。你提到的jsonlint验证通过,应该是该工具的实现不够严格,没有遵循规范校验。
  2. Python字符串解析干扰:Python普通字符串中,\同样会被当作转义符处理。即便Python对\C这种无效转义仅抛出警告而非直接报错,最终传给json.loads()的字符串依然包含\C这个JSON不认可的序列,导致解码失败。

解决方法

要让JSON解析器正确识别并得到b=D:\C的结果,必须保证传入json.loads()的是符合规范的JSON字符串,具体有两种实现方式:

方式1:Python普通字符串双重转义反斜杠

在Python字符串中,\\会被解析为单个\,因此要生成符合JSON规范的D:\\C(对应最终值D:\C),需要在Python字符串中写四层反斜杠:

import json
s = '{"prop": "b=D:\\\\C"}'
l = json.loads(s)
print(l["prop"])  # 输出:b=D:\C

方式2:Python原始字符串+JSON规范转义

原始字符串(前缀r)会忽略Python的转义规则,直接保留\,但仍需遵循JSON规范,把单个\写成\\:

import json
s = r'{"prop": "b=D:\\C"}'
l = json.loads(s)
print(l["prop"])  # 输出:b=D:\C

补充说明

如果你的原始数据源(比如本地文件、接口返回)中确实存在{"prop": "b=D:\C"}这类非标准JSON,需要先预处理,把\C替换为\\C,再进行JSON解码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:57:18