这是最直接的方法,通过手动编写代码将 map 中的键值对赋值给结构体的字段。 go package main import ( "fmt" ) type Person struct { Name string Age int } func mapToStruct(m map[string]interface{}) Person { return Person{ Name: m["Name
先将map 转换成JSON,再通过 JSON 转换成struct 操作有点繁琐 func TestMapToStructByJson(t *testing.T) { beforeMap := map[string]interface {}{ "id":"123", "user_name":"酒窝猪", "address":[]map[string]interface{}{{"address": "address01"}, {"address": "address02"}}, } var after...
package mainimport("fmt""github.com/goinggo/mapstructure")typePerson struct { Name string Ageint} func MapToStruct() { mapInstance := make(map[string]interface{}) mapInstance["Name"] ="liang637210"mapInstance["Age"] =28var person Person //将map转换为指定的结构体iferr := mapstructure.Dec...
golang-map转结构体 package main import ("fmt""github.com/mitchellh/mapstructure") type Userstruct{ NamestringAgeint} func MapToStruct() { mapInstance := make(map[string]interface{}) mapInstance["name"] ="stefan"mapInstance["age"] =28fmt.Println(mapInstance)varperson Useriferr := mapstruc...
{"Id": 978, "Name": "wangwu", "Sex": "男"}, } type User struct { Id int Name string Sex string } users := []*User{} mapToStruct(mList, &users) fmt.Printf("users: %+v\n", users) } func mapToStruct(mList []map[string]interface{}, model interface{}) (err error) { ...
v:=map[string]string{"time":"2019-07-02"}typeResultstruct{Timetime.Time`json:"time"`} 首先...
m := map[string]interface{}{ "name": "Tom", "age": 28, "gender": "Male", } var u User err := v.MapToStruct(m, &u) if err != nil {fmt.Printf("error: %v", err) } fmt.Printf("%+v\n", u) // Output: {Name:Tom Age:28 Gender:Male} ...
varm =make(map[string]interface{}) mergo.Map(&m, student) fmt.Printf("m: %v\n", m)// 输出:m: map[age:23 name:Tom]} funcmain(){structToMap()} 在这个例子中,我们定义了一个 Student 结构体,并通过 Mergo 将它转换成了 map。注意,email 字...
var dat map[string]interface{} if err := json.Unmarshal([]byte(jsonStr), &dat); err == nil { fmt.Println("===json str 转map===") fmt.Println(dat) fmt.Println(dat["host"]) } //json str 转struct var config ConfigStruct
type Userstruct{ Namestring`json:"name"` PhoneNumberstring`json:"phone_number"` Hobbies []string`json:"hobbies"` }//对于带 下划线命名 的变量,不能直接解析到funcTestRangeMap1(t *testing.T) { m1 := map[string]interface{}{"name":"whw","phone_number":"13333333333",//TODO 将字段设置为 ph...