Go语言JSON数据相互转换
本文内容纲要:
-结构体转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