如何从我的json转储反斜杠删除?
我的python代码是:
@sio.on('donation')
def on_message(data):
y = json.loads(data)
with open('donate.json', 'w') as outfile:
json.dump(data, outfile)
如果我把print全部设置为fine,没有反斜杠!但是如果我打开json文件,它看起来像这样:
"{"id":107864345,"alert_type":"1","is_shown":"0","additional_data":"{\"randomness\":811}","billing_system":"fake","billing_system_type":null,"username":"test24","amount":"1.00","amount_formatted":"1","amount_main":1,"currency":"USD","message":"aaaaaa aaaa","header":"","date_created":"2022-12-17 21:57:10","emotes":null,"ap_id":null,"_is_test_alert":true,"message_type":"text","preset_id":0}"
我尽我所能
您的代码,注释:
def on_message(data):
当调用该函数时,将为其提供参数data
,该参数是一个字符串,包含复杂对象的JSON编码。
y = json.loads(data)
现在data
还是原来的字符串,y
是由data
表示的复合对象。
with open('donate.json', 'w') as outfile:
json.dump(data, outfile)
json.dump
接受一个数据对象并将其转换为字符串。使用两个参数,就像这里一样,它将字符串写入文件。但是,尽管它的名字,data
不是数据对象。它是一个字符串。数据对象为y
。
json.dump
将把任何具有JSON表示的Python对象转换为表示该对象的字符串,字符串可以用JSON表示。因此,在这种情况下,data
中的字符串被编码为JSON表示。这意味着字符串必须用双引号括起来,任何特殊字符都必须转义。
但那不是你想要的。您希望转储数据对象,将其命名为y
。将该行改为
json.dump(y, outfile)
可能会做你想做的。
但是如果你只是想写出字符串,那么把它转换成JSON再转换回字符串就没有多大意义了。你可以直接写出来:
outfile.write(data)
然后你可以去掉y
(除非你在其他地方需要它)。