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

Python3中如何去除JSON dump生成的多余反斜杠?

问题解决:JSON写入文件出现大量转义反斜杠

原因分析

你接收的data本质是已序列化的JSON字符串(比如形如"{\"name\":\"xxx\",\"amount\":100}"的字符串)。直接用json.dump(data, f)写入时,json模块会把这个字符串当作普通字符串值处理,为了符合JSON格式规范,会自动对字符串内部的引号、特殊字符进行转义,最终文件里就会出现大量\。而你打印data时看不到反斜杠,是因为Python控制台会自动解析字符串的转义显示,实际字符串本身是带转义的。

解决办法

既然已经用json.loads(data)解析出了Python对象y,直接写入这个解析后的对象即可,不要写入原始的data字符串。

错误代码示例

@sio.on('donation')
def handle_donation(data):
    y = json.loads(data)
    # 错误:直接dump字符串data,导致转义
    with open('donate.json', 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

正确代码示例

import json

@sio.on('donation')
def handle_donation(data):
    # 解析为Python字典/列表对象
    y = json.loads(data)
    # 写入解析后的对象,生成合法JSON
    with open('donate.json', 'w', encoding='utf-8') as f:
        json.dump(y, f, ensure_ascii=False, indent=4)

补充说明

如果不需要保留解析后的y,也可以直接解析后写入:

@sio.on('donation')
def handle_donation(data):
    parsed_data = json.loads(data)
    with open('donate.json', 'w', encoding='utf-8') as f:
        json.dump(parsed_data, f, ensure_ascii=False, indent=4)

这样写入的文件就是标准的JSON结构,不会出现多余的转义反斜杠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:40:56