5

注: この質問はEmbedding JSON objects in script tagsに非常に近いですが、その質問への回答は、私が既に知っていること (JSON /==のこと\/) を提供します。そのエスケープを行う方法を知りたいです。

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'<\/')

より良い方法はありますか?または、私が見落としている落とし穴はありますか?

4

1 に答える 1