渡ってきたJSONをUnmarshalしようと、こんな感じのコードを書きました。
package main import ( json "encoding/json" "fmt" ) type User struct { Name []byte `json:name` } func main() { var j = `{ "name": "Ken" }` var u User json.Unmarshal([]byte(j), &u) fmt.Println(string(u.Name)) }
上手いことNameに値が入ってくるのかなと思ったら何も入ってこない・・・
なので、UnmarshalJSONを使ってシュッとやってみました。
package main import ( json "encoding/json" "fmt" ) type User struct { Name []byte `json:name` } func (u *User) UnmarshalJSON(data []byte) (err error) { var value map[string]string json.Unmarshal(data, &value) u.Name = []byte(value["name"]) return nil } func main() { var j = `{ "name": "Ken" }` var u User json.Unmarshal([]byte(j), &u) fmt.Println(string(u.Name)) }
これで表示されました。 Unmarshal時のタイミングで何かかませたい場合はUnmarshalJSONをぶっこめばいいという感じですね。他にも色々使えそう。