如何从我的json中删除反斜杠()python3



如何从我的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(除非你在其他地方需要它)。

最新更新