@kyanny's blog

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

Go: json Encode() は末尾に改行文字がつく

go - Why does json.Encoder add an extra line? - Stack Overflow

*json.Encoder はストリーム処理用で、区切りとして \n をつけると。そういうものらしい。

改行文字を取り除くには strings.TrimSuffix() を使う。

ドキュメントにも書いてある。

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

ソースコード

https://golang.org/src/encoding/json/stream.go?s=5070:5117#L191


> をエスケープしていない JSON をリクエストボディにしたら末尾に改行文字がついたせいでシグネチャの計算値が変わってしまい、とある API の呼び出しがエラーになって少しハマった。


実験結果

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