[英]golang json decode with field name
對於以下JSON
{
"Jon": {
"Age": 15
},
"Mary": {
"Age": 17
}
}
我如何將其映射到golang結構中,通常,該結構將是
type Person struct {
Name string `json:??,string`
Age int `json:Age, int`
}
因為json字段名稱是struct的屬性,所以謝謝。
您必須使用自定義JSON編組
package main import ( "encoding/json" "log" "fmt" ) type Person struct { Name string `json:??,string` Age int `json:Age, int` } type People map[string]*Person func (p *People) UnmarshalJSON(data []byte) error { var transient = make(map[string]*Person) err := json.Unmarshal(data, &transient) if err != nil { return err } for k, v := range transient { v.Name = k (*p)[k] = v } return nil } func main() { jsonInput := ` { "Jon": { "Age": 15 }, "Mary": { "Age": 17 } } ` var people People = make(map[string]*Person) err := people.UnmarshalJSON([]byte(jsonInput)) if err != nil { log.Fatal(err) } for _, person := range people { fmt.Printf("%v -> %v\n", person.Name, person.Age) } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.