json的序列化【本质是转化为可传输的二进制】

type Monster struct {
    Name  string //如果改成小写,序列化时跨包会丢掉此字段
    Age   int    `json:"age"` //代表json过后的重命名
    Score float64
}

func testStruct() {
    monster := Monster{Name: "牛魔王", Age: 300, Score: 95}
    data, err := json.Marshal(&monster) //返回的是[]byte切片
    if err != nil {
        fmt.Printf("序列化错误err=%v", err)
    }
    //序列化结构体={"Name":"牛魔王","age":300,"Score":95}
    fmt.Printf("序列化结构体=%v\n", string(data))
}

反序列化【接收网络传输过来的二进制数据转化为语言可操作的数据类型】

func unmarshalStruct() {
    var monster Monster
    str := "{\"Name\":\"牛牛\",\"age\":330,\"Score\":92}"
    err := json.Unmarshal([]byte(str), &monster)#将二进制流转为go语言可以识别的对象
    if err != nil {
        fmt.Printf("unmarshal err=%v", err)
    }
    fmt.Printf("反序列化后:%v\n", monster)
}

 

posted on 2022-12-17 21:57  topass123  阅读(7)  评论(0编辑  收藏  举报