在 Go 模板中转义 HTML 和 JSON
在 Go 模板中,正确处理 HTML 和 JSON 以防止意外转义至关重要。考虑以下模板:
{{ .SomeOtherHTML }}
如果您希望输出只是
<the_other_html/<
HTML 转义的解决方案
要防止这种情况,您应该将 HTML 代码作为 template.HTML 类型而不是字符串传递。 template.HTML 是一种特殊类型,指示 Go 不要转义其内容。例如:
tpl := template.Must(template.New("main").Parse(`{{define "T"}}{{.Html}}{{.String}}{{end}}`))
tplVars := map[string]interface{} {
"Html": template.HTML("Paragraph
"),
"String": "Paragraph
",
}
tpl.ExecuteTemplate(os.Stdout, "T", tplVars)
JSON转义的解决方案
如果你还需要渲染JSON,你应该使用json. Marshal 函数将其转换为字节数组。这可以防止 Go 转义 JSON 内容。例如:
jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)
通过遵循这些最佳实践,您可以确保在 Go 模板中正确转义 HTML 和 JSON,从而获得所需的输出,而无需意外修改。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3