首頁 >後端開發 >Golang >如何避免 Go 模板中 HTML 和 JSON 的意外轉義?

如何避免 Go 模板中 HTML 和 JSON 的意外轉義?

DDD
DDD原創
2024-11-03 04:17:02508瀏覽

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

在Go 模板中轉義HTML 和JSON

在Go 模板中,正確處理HTML 和JSON 以防止意外轉義至關重要。考慮以下範本:

<some_html> {{ .SomeOtherHTML }} </some_html>

如果您希望輸出只是 ,您可能會遇到特殊字元如

<some_html> <the_other_html/< </some_html>

HTML 轉義解決方案

要防止這種情況,您應該將HTML 程式碼作為模板傳遞。 HTML 類型而不是字串。 template.HTML 是一種特殊類型,指示 Go 不要轉義其內容。例如:

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

JSON 轉義的解

如果還需要渲染 JSON,則應該使用 json.Marshal 函數將其轉換為位元組大批。這可以防止 Go 轉義 JSON 內容。例如:

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

透過遵循這些最佳實踐,您可以確保在 Go 範本中正確轉義 HTML 和 JSON,從而獲得所需的輸出,而無需進行意外修改。

以上是如何避免 Go 模板中 HTML 和 JSON 的意外轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn