Nota: questa domanda è molto vicina a Embedding JSON objects in script tags, ma le risposte a tale domanda forniscono quello che già so (quello in JSON /
== \/
). Voglio sapere come farlo scappare.Come faccio a uscire dalla chiusura '/' nei tag HTML in JSON con Python?
La specifica HTML vieta i tag HTML chiusi ovunque all'interno di un elemento <script>
. Quindi, questo fa sì che errori di analisi:
<script>
var assets = [{
"asset_created": null,
"asset_id": "575155948f7d4c4ebccb02d4e8f84d2f",
"body": "<script></script>"
}];
</script>
Nel mio caso, sto generando la situazione non valida per il rendering di una stringa JSON all'interno di un modello di Django, vale a dire:
<script>
var assets = {{ json_string }};
</script>
So che JSON analizza \/
lo stesso di /
, quindi se riesco a sfuggire ai miei tag HTML di chiusura nella stringa JSON, starò bene. Ma non sono sicuro del modo migliore per farlo.
Il mio approccio ingenuo sarebbe solo questo:
json_string = '[{"asset_created": null, "asset_id": "575155948f7d4c4ebccb02d4e8f84d2f", "body": "<script></script>"}]'
escaped_json_string = json_string.replace('</', r'<\/')
C'è un modo migliore? O qualche trucco che sto trascurando?
Ma questo funziona solo per XHTML, giusto? Con '' '', '' CDATA'' sembra non funzionare. Ecco perché ho preferito l'escape di '' \/'in JSON. La domanda era più su come eseguire la sostituzione della stringa per l'escape rispetto a come sfuggire al testo stesso. –
@GeoffreyHing Ah sì ho assunto erroneamente la parte XHTML. Ho aggiornato la mia risposta per la parte di fuga di DJango. – cwgem
@GeoffreyHing: django viene fornito con una propria copia di simplejson che è possibile importare usando 'from django.utils import simplejson' quindi non è necessario installarlo separatamente. –