Escapando de HTML e JSON em modelos Go
Em modelos Go, é essencial lidar com HTML e JSON corretamente para evitar escapes não intencionais. Considere o seguinte modelo:
{{ .SomeOtherHTML }}
Se você espera que a saída seja simplesmente
<the_other_html/<
Solução para escape de HTML
Para evitar isso, você deve passar o código HTML como um tipo template.HTML em vez de uma string. template.HTML é um tipo especial que instrui Go a não escapar de seu conteúdo. Por exemplo:
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)
Solução para escape de JSON
Se você também precisar renderizar JSON, você deve usar o json. Função Marshal para convertê-lo em uma matriz de bytes. Isso evita que Go escape do conteúdo JSON. Por exemplo:
jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)
Seguindo essas práticas recomendadas, você pode garantir o escape adequado de HTML e JSON em seus modelos Go, resultando na saída desejada sem modificações indesejadas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3