gpt4 book ai didi

python - 在 json 输出中转义正斜杠

转载 作者:行者123 更新时间:2023-12-01 05:38:10 25 4
gpt4 key购买 nike

我有一个Python服务器端应用程序,它生成一个简单的HTML页面,其中包含大量客户端JavaScript,该页面基于分配给js的大量JSON数据生成客户端显示给用户的DOM树多变的。其中一些 JSON 数据包含字符串,其中一些包含 HTML 标签。这一切都归结为这样:

<html>
...
var tmp = "<p>some text</p>";
...
</html>

不出所料,上面的代码不起作用,因为它应该如下所示才能让浏览器 HTML 解析器满意:

<html>
...
var tmp = "<p>some text<\/p>";
...
</html>

(注意转义的正斜杠)

插入 HTML 中的 JSON 是使用 python 默认 json 库生成的。也就是说,json.dumps 被明确设计为转义字符串中的正斜杠。

我尝试对 json.JSONDecoder 进行子类化以覆盖其对 python 字符串的行为,但这不起作用,因为它不允许对基本 python 类型的序列化进行专门化。

我尝试使用各种其他 python json 库,但运气不佳:似乎由于大多数人讨厌转义的正斜杠,因此大多数库不会生成它们。

在调用 json.dumps 之前,我可以手动转义字符串,然后将它们填充到我的 python 数据结构中。我还可以编写一个函数来递归地迭代数据结构、发现字符串并自动转义它们(从长远来看更好)。在将 json.dumps 生成的字符串填充到 HTML 中之前,我也许可以对其进行转义(我不确定这是否会导致在 HTML 中插入无效的 JSON)。

这引出了我的问题:是否有一个 json 序列化库可以强制转义 python 中字符串中的正斜杠?

最佳答案

我发现的最好方法是对结果字符串进行替换。

out = json.dumps(obj)
out = out.replace("/", "\\/")

在 JSON 规范中,转义正斜杠是可选的,这样做可以确保您不会被 "</script>" 所困扰。字符串中的攻击。<​​/p>

关于python - 在 json 输出中转义正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com