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

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

DDD
發布: 2024-11-03 04:17:02
原創
510 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板