Экранирование HTML и JSON в шаблонах Go
В шаблонах 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. Функция маршала для преобразования его в массив байтов. Это не позволяет Go избежать экранирования содержимого JSON. Например:
jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)
Следуя этим рекомендациям, вы можете обеспечить правильное экранирование HTML и JSON в шаблонах Go, что приведет к получению желаемого результата без непреднамеренных изменений.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3