@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Go: json & や < や > をエスケープしない 

SetEscapeHTML() を使う。

b = new(bytes.Buffer)
enc = json.NewEncoder(b)
enc.SetEscapeHTML(false)
enc.Encode("&<>")
fmt.Println(b.String())
//=> "&<>"

Go の json パッケージは &, <, > をエスケープする。 *json.Encoder.SetEscapeHTML() に false を渡すとエスケープを抑止できる。 json.Marshal() では無理なので Encoder を使う必要がある。

https://golang.org/pkg/encoding/json/#Encoder.SetEscapeHTML


実験結果

https://play.golang.org/p/oMhO_ea_cba