格式:
data,err := json.Marshal(pet)
err := json.Unmarshal([]byte(str),&pet)
struct 和json
struct加上tag,tag的前后的符号不是单引号,而是键盘最左上角的按键。
package main
import (
"encoding/json"
"fmt"
)
type Pet struct{
Name string `json:"petName"`
Age int `json:"age"`
Sex string `json:"sex"`
}
//结构体转JSON
func structToJson()string{
pet := Pet{
Name:"小白",
Age :18,
Sex:"male",
}
data,err := json.Marshal(pet)
if err !=nil{
fmt.Println("json.marshal failed.error=",err)
}
return string(data)
}
//json to struct
func jsonToStruct(str string){
var pet Pet
err := json.Unmarshal([]byte(str),&pet)
if err != nil{
panic(err)
}
fmt.Println(pet)
}
func main(){
str := structToJson()
jsonToStruct(str)
}
map和json
package main
import (
"encoding/json"
"fmt"
)
func mapToJson(tempMap *map[string]interface{})string{
data,err := json.Marshal(tempMap)
if err !=nil{
panic(err)
}
return string(data)
}
func jsonToMap(str string){
var tempMap map[string]interface{}
err := json.Unmarshal([]byte(str),&tempMap)
if err != nil{
panic(err)
}
fmt.Println(tempMap)
}
func main(){
tempMap := make( map[string]interface{})
tempMap["name"]="小白"
tempMap["age"]=18
tempMap["sex"]="male"
str := mapToJson(&tempMap)
fmt.Println(str)
jsonToMap(str)
}
slice和json
package main
import (
"encoding/json"
"fmt"
)
func sliceToJson(s []map[string]interface{})string{
data ,err:= json.Marshal(s)
if err!=nil{
panic(err)
}
return string(data)
}
func JsonToSlice(str string){
var s []map[string]interface{}
err := json.Unmarshal([]byte(str),&s)
if err!=nil{
fmt.Println("json.marshal failed.error=",err)
}
fmt.Print(s)
}
func main(){
var s []map[string]interface{}
temp := make(map[string]interface{})
temp["age"]=18
temp["name"]="小白"
temp["sex"]="male"
s = append(s, (temp))
str :=sliceToJson(s)
fmt.Println(str)
JsonToSlice(str)
}
参考资料:
https://www.cnblogs.com/itbsl/p/10638223.html