package main
import (
"encoding/json"
"fmt"
)
/*
*json序列化
*json 结构体打包要求:定义结构体,运用Tag字段
*结构体大写字段才能被打包,为保证数据的安全,加Tag
*/
type Student struct {
Name string `json:"name1"`
Age int `json:"name"`
Score int `json:"score"`
}
func structJson() (ret string, err error) {
var stu Student = Student{
Name: "stu01",
Age: 18,
Score: 80,
}
data, err := json.Marshal(stu)
if err != nil {
err = fmt.Errorf("json encode stu failed,err:", err)
return
}
fmt.Println(string(data))
ret = string(data)
return
}
func mapJson() (ret string, err error) {
var m map[string]interface{} //定义值得类型为interface 可以存储任意数据类型
m = make(map[string]interface{})
m["name"] = "zss"
m["age"] = 24
data, err := json.Marshal(m)
if err != nil {
err = fmt.Errorf("json encode stu failed,err:", err)
return
}
fmt.Println(string(data))
ret = string(data)
return
}
func sliceMapJson() {
var s []map[string]interface{} //定义值得类型为interface 可以存储任意数据类型
var m map[string]interface{} //定义值得类型为interface 可以存储任意数据类型
m = make(map[string]interface{})
m["name"] = "zss"
m["age"] = 24
s = append(s, m)
m = make(map[string]interface{})
m["name"] = "qwe"
m["age"] = 28
s = append(s, m)
data, err := json.Marshal(s)
if err != nil {
fmt.Println("json encode stu failed,err:", err)
return
}
fmt.Println(string(data))
}
func testpasJson() {
var stu Student
data, err := structJson()
if err != nil {
fmt.Println("json encode stu failed,err:", err)
}
json.Unmarshal([]byte(data), &stu) //不管是map还是struct都要传指针
fmt.Println(stu)
}
func main() {
structJson()
mapJson()
sliceMapJson()
testpasJson()
}
golang json序列化一
最新推荐文章于 2025-05-24 13:41:52 发布