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