Heim > Backend-Entwicklung > Golang > Wie vermeide ich unbeabsichtigtes Escapen von HTML und JSON in Go-Vorlagen?

Wie vermeide ich unbeabsichtigtes Escapen von HTML und JSON in Go-Vorlagen?

DDD
Freigeben: 2024-11-03 04:17:02
Original
530 Leute haben es durchsucht

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

HTML und JSON in Go-Vorlagen maskieren

In Go-Vorlagen ist es wichtig, HTML und JSON ordnungsgemäß zu handhaben, um unbeabsichtigtes Escapen zu verhindern. Betrachten Sie die folgende Vorlage:

<some_html> {{ .SomeOtherHTML }} </some_html>
Nach dem Login kopieren

Wenn Sie erwarten, dass die Ausgabe einfach , möglicherweise tritt das Problem auf, dass Sonderzeichen wie < und & werden maskiert, was zu einer unerwarteten Ausgabe führt:

<some_html> <the_other_html/< </some_html>
Nach dem Login kopieren

Lösung für HTML-Escapezeichen

Um dies zu verhindern, sollten Sie den HTML-Code als Vorlage übergeben. HTML-Typ anstelle einer Zeichenfolge. template.HTML ist ein spezieller Typ, der Go anweist, seinen Inhalt nicht zu maskieren. Zum Beispiel:

<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>
Nach dem Login kopieren

Lösung für JSON Escaping

Wenn Sie auch JSON rendern müssen, sollten Sie die Funktion json.Marshal verwenden, um es in ein Byte umzuwandeln Array. Dadurch wird verhindert, dass Go dem JSON-Inhalt entgeht. Zum Beispiel:

<code class="go">jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)</code>
Nach dem Login kopieren

Durch Befolgen dieser Best Practices können Sie sicherstellen, dass HTML und JSON in Ihren Go-Vorlagen ordnungsgemäß maskiert werden, sodass die gewünschte Ausgabe ohne unbeabsichtigte Änderungen erzielt wird.

Das obige ist der detaillierte Inhalt vonWie vermeide ich unbeabsichtigtes Escapen von HTML und JSON in Go-Vorlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage