Go使用json包的Marshal和Unmarshal进行json的序列化和反序列化。
json 序列化:
// 定义结构体
type Cat struct {
Name string
Age int8
}
// 序列化
c := Cat{"Tom", 2}
bytes, err := json.Marshal(c)
if err != nil {
fmt.Printf("erro >> %v", err)
}
fmt.Printf("json >> %v", string(bytes))
// 打印结果:
//json >> {"Name":"Tom","Age":2}
特别注意:结构体名称、字段名称需要大写。
json反序列化:
// 仍使用上面的结构体
jstr := `{"Name": "Tom1", "Age": 3}`
var jc Cat
err = json.Unmarshal([]byte(jstr), &jc)
if err != nil {
fmt.Printf("erro >> %v", err)
}
fmt.Println(jc)
// 打印结果:
//{Tom1 3}
使用tag解决名称大写的问题:
type Cat struct {
Name string `json:"name"`
Age int8 `json:"age"`
}
// 打印结果:
//json >> {"name":"Tom","age":2}