@kyanny's blog

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

Go: json.Unmarshal と JSON タグの仕様

これもなぜ調べたか忘れてしまったが、 Go の json.Unmarshal で、

  • JSON タグで空白を含むキーの書き方
  • omitempty はカンマのあとに書くが、ではカンマを含むキーの JSON タグはどう書くのか
  • JSON タグを指定しない場合、構造体のどのフィールドにマッピングされるのか

などが気になって調べたんだったと思う。あと、 JSON タグを書いてるのにうまくマッピングされずに困って調べたような気もする。

結論

  • JSON タグはダブルクォート必須
  • JSON タグが無い場合、 JSON のキーと完全一致または case-insensitive で一致するフィールドにマッピングされる
  • JSON タグには空白を含められるが、空白の位置・数も含めて完全一致が求められる
  • JSON タグにはカンマを含めることができない