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
DDDOriginal
2024-11-03 04:17:02446Durchsuche

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>

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>

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>

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>

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!

Stellungnahme:
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