"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo evitar el escape involuntario de plantillas HTML y JSON en Go?

¿Cómo evitar el escape involuntario de plantillas HTML y JSON en Go?

Publicado el 2024-11-09
Navegar:386

How to Avoid Unintended Escaping of HTML and JSON in Go Templates?

Escapar de HTML y JSON en plantillas de Go

En las plantillas de Go, es esencial manejar HTML y JSON correctamente para evitar escapes no deseados. Considere la siguiente plantilla:

 {{ .SomeOtherHTML }} 

Si espera que el resultado sea simplemente , Es posible que se produzca el problema de que caracteres especiales como

 <the_other_html/< 

Solución para escape HTML

Para evitar esto, debe pasar el código HTML como una plantilla.Tipo HTML en lugar de una cadena. template.HTML es un tipo especial que le indica a Go que no escape de su contenido. Por ejemplo:

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)

Solución para escape JSON

Si también necesita renderizar JSON, debe usar json. Función Marshal para convertirlo en una matriz de bytes. Esto evita que Go escape del contenido JSON. Por ejemplo:

jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)

Al seguir estas mejores prácticas, puede garantizar un escape adecuado de HTML y JSON en sus plantillas de Go, lo que dará como resultado el resultado deseado sin modificaciones no deseadas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3