我有一个 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 中字符串中的正斜杠?