- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个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/
我是一名优秀的程序员,十分优秀!