格式:
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
本文详细介绍了在Go语言中如何使用标准库encoding/json进行JSON的序列化和反序列化操作,包括结构体、切片和映射类型的数据转换。通过具体的代码示例,展示了如何将Go数据结构转化为JSON格式,以及如何将JSON字符串解析回Go的数据结构。
1086

被折叠的 条评论
为什么被折叠?



