在Golang開發(fā)中,JSON是一種非常常見的數(shù)據(jù)格式,而JSON數(shù)據(jù)最常見的存儲(chǔ)格式是map。將JSON格式的map轉(zhuǎn)換成對應(yīng)的結(jié)構(gòu)體對象是非常常見的操作,使用Golang內(nèi)置的encoding/json包能夠?qū)崿F(xiàn)這一操作,下面我們來了解如何將JSON格式的map轉(zhuǎn)為Golang結(jié)構(gòu)體。
下面使用如下JSON數(shù)據(jù):
{ "name": "Tom", "age": 20, "languages": [ "Java", "Golang", "Python" ] }
定義一個(gè)對應(yīng)的結(jié)構(gòu)體:
type User struct { Name string `json:"name"` Age int `json:"age"` Languages []string `json:"languages"` }
轉(zhuǎn)換JSON格式的map:
func main() { jsonMap := map[string]interface{}{ "name": "Tom", "age": 20, "languages": []interface{}{ "Java", "Golang", "Python", }, } jsonData, err := json.Marshal(jsonMap) if err != nil { fmt.Println(err.Error()) return } user := User{} err = json.Unmarshal(jsonData, &user) if err != nil { fmt.Println(err.Error()) return } fmt.Printf("%+v", user) }
執(zhí)行以上代碼,輸出結(jié)果:
{("Tom", 20, ["Java", "Golang", "Python"])}
我們可以看到,成功將JSON格式的map轉(zhuǎn)為了對應(yīng)的結(jié)構(gòu)體對象。