golang map,json,struct相互转换
==Json转Map==
package main import ( "encoding/json" "fmt" ) func main() { jsonStr := ` { "name": "张三", "age": 18 } ` var mapResult map[string]interface{} err := json.Unmarshal([]byte(jsonStr), &mapResult) if err != nil { fmt.Println(err) return } fmt.Println(mapResult) }
==Json转Struct==
package main import ( "encoding/json" "fmt" ) type People1 struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := ` { "name": "张三", "age": 12 } ` var people People1 err := json.Unmarshal([]byte(jsonStr), &people) if err != nil { fmt.Println(err) return } fmt.Println(people) }
==Map转Json==
package main import ( "encoding/json" "fmt" ) func main() { var mapInstances []map[string]interface{} instance1 := map[string]interface{}{"name": "张三", "age": 18} instance2 := map[string]interface{}{"name": "李四", "age": 35} mapInstances = append(mapInstances, instance1, instance2) jsonStr, err := json.Marshal(mapInstances) if err != nil { fmt.Println(err) return } fmt.Println(string(jsonStr)) }
==Map转Struct==
安装插件:go get github.com/goinggo/mapstructure
package main import ( "fmt" "github.com/goinggo/mapstructure" ) type People3 struct { Name string `json:"name"` Age int `json:"age"` } // go get github.com/goinggo/mapstructure func main() { mapInstance := make(map[string]interface{}) mapInstance["Name"] = "张三" mapInstance["Age"] = 18 var people People3 err := mapstructure.Decode(mapInstance, &people) if err != nil { fmt.Println(err) return } fmt.Println(people) }
==Struct转Json==
package main import ( "encoding/json" "fmt" ) type People2 struct { Name string `json:"name"` Age int `json:"age"` } func main() { p := People2{ Name: "张三", Age: 18, } jsonBytes, err := json.Marshal(p) if err != nil { fmt.Println(err) return } fmt.Println(string(jsonBytes)) }
==Struct转Map==
package main import ( "fmt" "reflect" ) type People4 struct { Name string `json:"name"` Age int `json:"age"` } func main() { people := People4{"张三", 18} obj1 := reflect.TypeOf(people) obj2 := reflect.ValueOf(people) var data = make(map[string]interface{}) for i := 0; i < obj1.NumField(); i++ { data[obj1.Field(i).Name] = obj2.Field(i).Interface() } fmt.Println(data) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)