[英]Golang json unmarshall
我是 Go 的新手。 我有這樣的json:
{
"3415": {
"age": 25,
"name": "Tommy"
},
"3414": {
"age": 21,
"name": "Billy"
}
}
我想將它解組為結構:
type People struct {
Id map[string]PeopleDetails
}
type PeopleDetails struct {
Age int `json:"age"`
Name string `json:"name"`
}
但是當我運行它時,我看到該結構返回 nil 值。 我確實閱讀了一些教程,但其中大多數都有預定義的鍵,正如您在此處看到的“id”,例如 3415 對於每個新的 json 都是不同的。
當您必須處理“動態”json 鍵時,答案是使用結構映射。
您可以使用以下代碼:
package main
import (
"encoding/json"
"fmt"
)
// Use the struct pointed by @Adirio
type People map[string]PeopleDetails
type PeopleDetails struct {
Age int `json:"age"`
Name string `json:"name"`
}
var data string = `{"3415":{"age":25,"name":"Tommy"},"3414":{"age":21,"name":"Billy"}}`
func main() {
var p People
if err := json.Unmarshal([]byte(data), &p); err != nil {
fmt.Println(err)
}
fmt.Println(p)
}
GoPlayground: https : //play.golang.org/p/kVzNV56NcTd
嘗試使用這些類型:
type People map[string]PeopleDetails
type PeopleDetails struct {
Age int `json:"age"`
Name string `json:"name"`
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.