go学习 06 结构体变量与json字符串互相转换

序列化: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)          //#是为了打印的更详细

}


posted @ 2021-07-24 09:23  ZY98  阅读(250)  评论(0编辑  收藏  举报