渡ってきた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をぶっこめばいいという感じですね。他にも色々使えそう。