JSON解析报错修复:含转义字符的JSON输入解析问题
解决JSON转义字符解析错误的方案
问题根源
你这段JSON里的转义存在非法项:JSON规范仅允许对特定字符(比如双引号"、反斜杠\、换行符等)进行转义,而input isn't valid里的\'(单引号前的反斜杠)属于违规转义,这才是json.loads()报错Invalid \escape的核心原因。你之前全局替换所有反斜杠,把合法的\"也改成了空格,导致字符串里的双引号直接暴露,触发了新的语法错误。
两种可行修复方案
方案1:精准修复非法转义
只把非法的\'替换成',保留合法的\"转义,既解决非法转义问题,又不会破坏字符串里的双引号包裹:
import json # 你的原始JSON内容 content = '''{"invalid-input": "input isn't valid", "enable-notifs": "\"Facebook\" would like to send notifs"}''' # 仅处理单引号前的非法反斜杠 fixed_content = content.replace("\\'", "'") # 正常解析 parsed_data = json.loads(fixed_content) print(parsed_data)
运行后会输出正确解析结果:
{'invalid-input': "input isn't valid", 'enable-notifs': '"Facebook" would like to send notifs'}
方案2:用容错库解析复杂不规范JSON
如果你的JSON还有其他各种不规范格式问题,不想手动逐个修复,可以用demjson这类支持容错解析的第三方库,它能自动兼容很多不符合标准的JSON写法:
import demjson content = '''{"invalid-input": "input isn't valid", "enable-notifs": "\"Facebook\" would like to send notifs"}''' # 容错解析 parsed_data = demjson.decode(content) print(parsed_data)
使用前需要先安装库:pip install demjson
重要提示
- JSON里单引号不需要转义,只有双引号、反斜杠本身等字符才需要转义,遇到
\'直接去掉反斜杠即可。 - 绝对不要全局替换所有反斜杠,会把合法的转义结构彻底破坏,引发更多错误。
内容的提问来源于stack exchange,提问作者Karthika Menon
相关产品推荐
相关产品推荐

