goの構造体のJSONのtagでめちゃくちゃ時間を溶かした
題目の通りです。2時間くらい溶かしました。
なにでそんなに溶かしたのか
jsonのTagでそんなに溶かすことないだろ、と。溶かした原因はこれです
example.go
type JsonValue struct {
foo string `json:"foo"`
bar string `json:"bar, omitempty"`
}
お分かり頂けただろうか?この心霊現象。。
わからない人は僕と一緒に2時間溶かすかも知れない恐ろしいものです。。
bar string `json:"bar, omitempty"`
スペースですね。カンマの後ろのスペースです。時間を溶かしたのはこれエラー吐かないからです。
stringなら空文字が入っていたときに json.Marshal
すると bar
は省略されるはずなのに空文字が入っちゃっておかしいなぁ〜ってなります。
このスペースは入れてはいけません。正しくはこう
bar string `json:"bar,omitempry"`
こんな簡単なミスにハマる人がいるかは分かりませんが、もしいたら助けになればと思います。
僕はもう一生忘れません。