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 の呼び出しがエラーになって少しハマった。
実験結果