Maison > développement back-end > Golang > le corps du texte

Comment éviter l'échappement involontaire du HTML et du JSON dans les modèles Go ?

DDD
Libérer: 2024-11-03 04:17:02
original
428 Les gens l'ont consulté

How to Avoid Unintended Escaping of HTML and JSON in Go Templates?

Échapper le HTML et le JSON dans les modèles Go

Dans les modèles Go, il est essentiel de gérer correctement le HTML et le JSON pour éviter tout échappement involontaire. Considérez le modèle suivant :

<some_html> {{ .SomeOtherHTML }} </some_html>
Copier après la connexion

Si vous vous attendez à ce que le résultat soit simplement , vous pouvez rencontrer le problème où les caractères spéciaux tels que < et & sont échappés, ce qui entraîne une sortie inattendue :

<some_html> <the_other_html/< </some_html>
Copier après la connexion

Solution pour l'échappement HTML

Pour éviter cela, vous devez transmettre le code HTML comme modèle. Tapez HTML au lieu d'une chaîne. template.HTML est un type spécial qui demande à Go de ne pas échapper à son contenu. Par exemple :

<code class="go">tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`))
tplVars := map[string]interface{} {
    "Html": template.HTML("<p>Paragraph</p>"),
    "String": "<p>Paragraph</p>",
}
tpl.ExecuteTemplate(os.Stdout, "T", tplVars)</code>
Copier après la connexion

Solution pour l'échappement JSON

Si vous devez également restituer JSON, vous devez utiliser la fonction json.Marshal pour le convertir en octet tableau. Cela empêche Go d'échapper au contenu JSON. Par exemple :

<code class="go">jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)</code>
Copier après la connexion

En suivant ces bonnes pratiques, vous pouvez garantir un échappement correct du HTML et du JSON dans vos modèles Go, ce qui entraîne le résultat souhaité sans modifications involontaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal