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