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

Python中Bytes转字符串生成JSON出现转义字符,如何不使用strip解决?

解决bytes转JSON字符串出现多余转义字符的问题

问题根源

你拿到的rmsg字节本身是其他程序生成的格式化JSON字节,生成时默认添加了末尾换行符,直接解码使用就会携带该换行符,后续外层JSON序列化时会自动对换行符、内部引号做转义,才出现了你看到的结果。

解决方案(均不使用strip方法)

根据你的业务需求可以选择以下两种方案:

方案1:希望Response Message对应结构化的数组对象(推荐)

不需要把rmsg转成字符串再塞进去,直接将解码后的内容反序列化为Python原生对象,再构造JSON结构即可:

import json

# 1. 解码字节并反序列化
rmsg_data = json.loads(rmsg.decode("utf-8"))
# 2. 构造响应结构
response = {"Response Message": rmsg_data}
# 3. 序列化为最终JSON字符串,可根据需求调整缩进参数
final_json = json.dumps(response, indent=4, ensure_ascii=False)

输出结果示例:

{
    "Response Message": [
        {
            "Id": "A1",
            "status": "P",
            "message": ""
        },
        {
            "Id": "A2",
            "status": "F",
            "message": ""
        }
    ]
}

这种方案完全不会出现多余的转义字符,也保留了数据的结构化属性,后续取值也不需要二次解析。


方案2:必须让Response Message对应字符串类型的JSON内容

如果你业务要求这个字段的值必须是字符串格式的JSON,那就先反序列化再重新生成无换行的干净JSON字符串:

import json

# 1. 解码并反序列化消除原始字节带的换行
rmsg_data = json.loads(rmsg.decode("utf-8"))
# 2. 重新生成无换行、无多余空格的JSON字符串
rmsg_clean_str = json.dumps(rmsg_data)
# 3. 构造响应并序列化
response = {"Response Message": rmsg_clean_str}
final_json = json.dumps(response, indent=4)

输出结果示例:

{
    "Response Message": "[{\"Id\": \"A1\", \"status\": \"P\", \"message\": \"\"},{\"Id\": \"A2\", \"status\": \"F\", \"message\": \"\"}]"
}

这种方案通过重新序列化的方式自动消除了原始内容带的换行符,只会保留JSON字符串必要的引号转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:03