// +build ignore,OMIT package main import ( "encoding/json" "fmt" "log" ) func main() { in := []byte(` { "full_name": "Gopher", "age": 7, "social_security": 1234 }`) var p Person if err := json.Unmarshal(in, &p); err != nil { log.Fatal(err) } fmt.Printf("%+v\n", p) } type Person struct { Name string AgeYears int SSN int } func (p *Person) UnmarshalJSON(data []byte) error { var aux struct { Name string `json:"full_name"` AgeYears int `json:"age"` SSN int `json:"social_security"` } if err := json.Unmarshal(data, &aux); err != nil { return err } *p = Person{ Name: aux.Name, AgeYears: aux.AgeYears, SSN: aux.SSN, } *p = Person(aux) return nil }