Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengelakkan HTML dan JSON yang tidak disengajakan melarikan diri dalam Templat Go?

Bagaimana untuk Mengelakkan HTML dan JSON yang tidak disengajakan melarikan diri dalam Templat Go?

DDD
Lepaskan: 2024-11-03 04:17:02
asal
512 orang telah melayarinya

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

Melepaskan HTML dan JSON dalam Templat Go

Templat In Go, adalah penting untuk mengendalikan HTML dan JSON dengan betul untuk mengelakkan pelarian yang tidak diingini. Pertimbangkan templat berikut:

<some_html> {{ .SomeOtherHTML }} </some_html>
Salin selepas log masuk

Jika anda menjangkakan output hanyalah , anda mungkin menghadapi isu di mana aksara khas seperti < dan & dilarikan, menghasilkan output yang tidak dijangka:

<some_html> <the_other_html/< </some_html>
Salin selepas log masuk

Penyelesaian untuk HTML Melarikan diri

Untuk mengelakkan ini, anda harus lulus kod HTML sebagai templat. Jenis HTML dan bukannya rentetan. template.HTML ialah jenis khas yang mengarahkan Go jangan lari daripada kandungannya. Contohnya:

<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>
Salin selepas log masuk

Penyelesaian untuk JSON Escaping

Jika anda juga perlu membuat JSON, anda harus menggunakan fungsi json.Marshal untuk menukarnya menjadi bait tatasusunan. Ini menghalang Go daripada melarikan diri daripada kandungan JSON. Contohnya:

<code class="go">jsonBytes, _ := json.Marshal(data)
outputString := string(jsonBytes)</code>
Salin selepas log masuk

Dengan mengikuti amalan terbaik ini, anda boleh memastikan HTML dan JSON melarikan diri dengan betul dalam templat Go anda, menghasilkan output yang diingini tanpa pengubahsuaian yang tidak diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan HTML dan JSON yang tidak disengajakan melarikan diri dalam Templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan