「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go テンプレートでの HTML と JSON の意図しないエスケープを回避するには?

Go テンプレートでの HTML と JSON の意図しないエスケープを回避するには?

2024 年 11 月 9 日に公開
ブラウズ:608

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

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 を使用する必要があります。マーシャル関数を使用してバイト配列に変換します。これにより、Go が JSON コンテンツをエスケープするのを防ぎます。例:

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

これらのベスト プラクティスに従うことで、Go テンプレートで HTML と JSON を適切にエスケープすることができ、意図しない変更が加えられることなく目的の出力が得られます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3