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

vyu0f0g1  于 2022-12-20  发布在  Python
关注(0)|答案(1)|浏览(318)

如何从我的json转储中删除反斜杠?
我的python代码是:

@sio.on('donation')
def on_message(data):
    y = json.loads(data)
    with open('donate.json', 'w') as outfile:
        json.dump(data, outfile)

如果我打印所有罚款和没有反斜杠!但如果我打开我的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}"

我尝试了所有我知道的

lmvvr0a8

lmvvr0a81#

您的代码,注解:

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(除非您在其他地方需要它)。

相关问题