首页 文章资讯内容详情

Go语言JSON数据相互转换

2026-06-01 4 花语

本文内容纲要:

-结构体转json -map转json -int转json -slice转json -json反序列化为结构体 -json反序列化为map

目录

结构体转json map转json int转json slice转json json反序列化为结构体 json反序列化为map

结构体转json

结构体转json示例:

packagemain import( "encoding/json" "fmt" ) //用户 typeUserstruct{ UserNamestring`json:"username"` NickNamestring`json:"nickname"` Age int`json:"age"` Birthdaystring`json:"birthday"` Sexstring`json:"sex"` Emailstring`json:"email"` Phonestring`json:"phone"` } //结构体转JSON funcstructToJSON(){ user:=User{ UserName:"itbsl", NickName:"jack", Age: 18, Birthday:"2001-08-15", Sex:"itbsl@gmail.com", Phone:"176XXXX6688", } data,err:=json.Marshal(user) iferr!=nil{ fmt.Println("json.marshalfailed,err:",err) return } fmt.Printf("%s\n",string(data)) } funcmain(){ structToJSON() }

输出结果:

{"username":"itbsl","nickname":"jack","age":18,"birthday":"2001-08-15","sex":"itbsl@gmail.com","email":"","phone":"176XXXX6688"}

map转json

map转json示例:

packagemain import( "encoding/json" "fmt" ) //map转json funcmapToJSON(tempMap*map[string]interface{})string{ data,err:=json.Marshal(tempMap) iferr!=nil{ panic(err) } returnstring(data) } funcmain(){ tempMap:=make(map[string]interface{}) tempMap["username"]="itbsl" tempMap["age"]=18 tempMap["sex"]="male" str:=mapToJSON(&tempMap) fmt.Println(str) }

输出结果:

{"age":18,"sex":"male","username":"itbsl"}

int转json

int转json

packagemain import( "encoding/json" "fmt" ) functestInt(){ varage=100 data,err:=json.Marshal(age) iferr!=nil{ fmt.Printf("json.marshalfailed,err:",err) return } fmt.Printf("%s\n",string(data)) } funcmain(){ testInt() }

输出结果:

100

slice转json

slice转json

packagemain import( "encoding/json" "fmt" ) //slice转json funcsliceToJSON(s[]map[string]interface{})string{ data,err:=json.Marshal(s) iferr!=nil{ panic(err) } returnstring(data) } funcmain(){ vars[]map[string]interface{} tempMap:=make(map[string]interface{}) tempMap["username"]="itbsl" tempMap["age"]=18 tempMap["sex"]="male" s=append(s,tempMap) tempMap=make(map[string]interface{}) tempMap["username"]="jane" tempMap["age"]=23 tempMap["sex"]="female" s=append(s,tempMap) str:=sliceToJSON(s) fmt.Println(str) }

输出结果:

[{"age":18,"sex":"male","username":"itbsl"},{"age":23,"sex":"female","username":"jane"}]

json反序列化为结构体

json转结构体:

packagemain import( "encoding/json" "fmt" ) //用户 typeUserstruct{ UserNamestring`json:"username"` NickNamestring`json:"nickname"` Age int`json:"age"` Birthdaystring`json:"birthday"` Sexstring`json:"sex"` Emailstring`json:"email"` Phonestring`json:"phone"` } //结构体转JSON funcstructToJSON()string{ user:=User{ UserName:"itbsl", NickName:"jack", Age: 18, Birthday:"2001-08-15", Sex:"itbsl@gmail.com", Phone:"176XXXX6688", } data,err:=json.Marshal(user) iferr!=nil{ fmt.Println("json.marshalfailed,err:",err) return"" } returnstring(data) } //json转结构体 funcJSONToStruct(strstring){ varuserUser err:=json.Unmarshal([]byte(str),&user) iferr!=nil{ panic(err) } fmt.Println(user) } funcmain(){ JSONToStruct(structToJSON()) }

输出结果:

{itbsljack182001-08-15itbsl@gmail.com176XXXX6688}

json反序列化为map

json转map

packagemain import( "encoding/json" "fmt" ) //map转json funcmapToJSON(tempMap*map[string]interface{})string{ data,err:=json.Marshal(tempMap) iferr!=nil{ panic(err) } returnstring(data) } funcJSONToMap(strstring){ vartempMapmap[string]interface{} err:=json.Unmarshal([]byte(str),&tempMap) iferr!=nil{ panic(err) } fmt.Println(tempMap) } funcmain(){ tempMap:=make(map[string]interface{}) tempMap["username"]="itbsl" tempMap["age"]=18 tempMap["sex"]="male" str:=mapToJSON(&tempMap) JSONToMap(str) }

输出结果:

map[age:18sex:maleusername:itbsl]

本文内容总结:结构体转json,map转json,int转json,slice转json,json反序列化为结构体,json反序列化为map,

原文链接:https://www.cnblogs.com/itbsl/p/10638223.html