序列化:go语言结构体变量-->json格式字符串
反序列化:json格式字符串-->go语言结构体变量
package main
import (
"encoding/json"
"fmt"
)
//结构体-->json格式
//注意:变量字段首字母需要大写,否自json包拿不到变量最后返回值为空
// type person struct {
// Name string
// Age int
// }
//解决方法
type person struct { //这样在json解析时就是小写了
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p1 := person{
Name: "小王",
Age: 23,
}
//序列化
a, err := json.Marshal(p1)
if err != nil {
fmt.Printf("Marshal faild,err:%v", err)
return
}
fmt.Println(string(a))
//反序列化
str := `{"name":"小周","age":22}`
var p2 person
json.Unmarshal([]byte(str), &p2) //传指针是为了能在jsop.Unmarshal内部修改p2的值
fmt.Printf("%#v\n", p2) //#是为了打印的更详细
}
go学习 06 结构体变量与json字符串互相转换