将指针接收器用于解组方法。如果使用值接收器,则方法返回时,对接收器的更改将丢失。
unmarshal方法的参数是JSON文本。解组JSON文本以获取纯字符串,并删除所有JSON引号。
func (intValue *PersonID) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } *intValue = Lookup(s) return nil}JSON标记与示例JSON之间不匹配。我更改了JSON以匹配标记,但是您可以使用其他方法进行更改。
if err := json.Unmarshal([]byte(`{"person": "Ralph", "count": 4, "greeting": "Hello"}`), &m); err != nil {[playground example](http://play.golang.org/p/-kOYet4CdH)



