注意:這個問題非常接近Embedding JSON objects in script tags,但對這個問題的回答提供了我已經知道的東西(在JSON /
== \/
中)。我想知道如何逃避。如何在使用Python的JSON中的HTML標記中關閉'/'?
HTML規範禁止在<script>
元素中的任何位置關閉HTML標記。因此,這將導致解析錯誤:
<script>
var assets = [{
"asset_created": null,
"asset_id": "575155948f7d4c4ebccb02d4e8f84d2f",
"body": "<script></script>"
}];
</script>
就我而言,我生成通過渲染Django模板內的JSON字符串無效的情況下,即:
<script>
var assets = {{ json_string }};
</script>
我知道,JSON解析\/
與/
相同,所以如果我可以在JSON字符串中跳過我的關閉HTML標記,那我會很好。但是,我不確定最好的方式來做到這一點。
我幼稚的做法只會是這樣的:
json_string = '[{"asset_created": null, "asset_id": "575155948f7d4c4ebccb02d4e8f84d2f", "body": "<script></script>"}]'
escaped_json_string = json_string.replace('</', r'<\/')
有沒有更好的辦法?或者我忽略的任何陷阱?
但是,這隻適用於XHTML,對不對?用''<!doctype html>'',''CDATA''似乎不起作用。這就是爲什麼我更喜歡JSON中的''\ /''轉義。問題更多的是關於如何進行字符串替換,而不是如何逃避文本本身。 – 2013-03-08 16:13:54
@GeoffreyHing啊是的我錯誤地認爲XHTML的一部分。我已經爲DJango轉義部分更新了我的答案。 – cwgem 2013-03-08 16:57:32
@GeoffreyHing:django帶有它自己的simplejson副本,您可以使用'from django.utils import simplejson'導入,因此您無需單獨安裝它。 – 2013-03-08 18:06:12