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
相关产品推荐
相关产品推荐

