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

Python如何正确读取值含反斜杠的JSON文件?

解决JSON反斜杠解析与输出问题

问题根源

首先明确JSON的核心规则:JSON字符串中的反斜杠必须是转义状态(即两个连续反斜杠\\),单个反斜杠\属于无效语法——因为JSON会把它当成转义符前缀,但\v这类组合并非JSON允许的合法转义(JSON仅支持\"、\\、\/、\b、\f、\n、\r、\t以及\uXXXX这类转义),所以直接解析单个反斜杠的JSON必然失败。

具体解决方案

1. 修复单个反斜杠的无效JSON

如果你的JSON文件里是单个反斜杠,首先得把文件内容修复成合法格式:

  • 手动修改:把所有单个\替换成\\
  • 代码批量修复(读取文件时处理):
    import json
    
    # 读取原始无效JSON文件
    with open('invalid.json', 'r', encoding='utf-8') as f:
        raw_content = f.read()
    
    # 把未转义的单个反斜杠替换成两个(注意:如果文件里已有\\,不会重复替换)
    fixed_content = raw_content.replace('\\', '\\\\')
    
    # 现在可以正常解析了
    data = json.loads(fixed_content)
    print(data['key'])  # 输出:value1\value2
    

2. 处理dumps后保留两个反斜杠的情况

当你用json.dumps()输出时出现两个反斜杠,这是符合JSON规范的正常行为——因为JSON要求反斜杠必须转义,所以输出的JSON字符串里用\\表示实际的单个\。

Python内部存储的字符串其实是单个反斜杠,只是输出JSON时会自动转义。如果非要强行输出单个反斜杠,生成的内容会变成无效JSON,其他解析工具读取时会报错,不推荐这么做。如果确实有特殊需求,可以手动替换:

output = json.dumps(data)
# 替换成单个反斜杠(生成非标准JSON)
non_standard_output = output.replace('\\\\', '\\')
print(non_standard_output)  # 输出:{"key": "value1\value2"}

关键提醒

  • 永远遵循JSON规范:单个反斜杠的JSON本身就是错误格式,不要指望标准解析工具能处理。
  • dumps输出的两个反斜杠不是bug,是正确的转义行为,Python内部数据是正常的单个反斜杠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:10:34