golang の html/template で JSON を整形する
こんにちは、 @kz_morita です。
golang で html/template でHTMLを返すときに、JSON の整形をする方法についてのメモです。
結論 sprig というライブラリを使用すると、golang の HTML template 内で便利な関数を使えるようになります。
https://github.com/Masterminds/sprig https://masterminds.github.io/sprig/ そのなかに、toPrettyJson という物があるので使用すると JSON をいい感じにフォーマットしてくれます。
import ( "html/template" "github.com/Masterminds/sprig/v3" ) type Response struct { Body string `json:"body"` } func Handler(w http.Response, r *http.Request) { resp := Response { Body: "{\"hoge\": \"fuga\"}" } parameter := map[string]interface{}{"body": resp} temp, err := template.New("index.html").Funcs(sprig.FuncMap()).ParseFiles("index.html") if err != nil { /* ... */ } err = temp.