エラーが起きたコード
... type Hoge struct { Foo string Bar string } ... func Piyo() { ... var h Hoge err := json.Unmarshal(b, h) ... }
これでこういうJSONが返ってくると"json: cannot unmarshal null into Go value of type string"となる。
{"foo": null, "bar": "spam"}
コードの変更
JSONのnullはGoのnilに変換されるので、型をstringでなく*stringにすれば良い。
... type Hoge struct { Foo *string Bar *string } ...
しかし、できればnullが返って来たら初期値にするようにしてほしいなあ...
追記 (2012.10.30)
修正されて、nullが会った場合にはzero valueが入るようになりました。Go 1.1で適用される予定。