【笔记】Go语言通过JSON序列化和反序列化

前言

Go语言通过JSON序列化和反序列化

定义结构体

json:"name":通过json标签,可以重新指定序列化之后的属性名,如果不指定json标签,则将结构体属性名作为序列化的json字符串的属性名

1
2
3
type Person struct {
Name string `json:"name"`
}

空值跳过配置

  • 如果在Tagjson:""中指定第二个参数omitempty,则当该字段值为空(null)时跳过JSON转换

json:""包含多个参数时,不能将omitempty参数作为第一个参数
json:"",后不能有空格

1
2
3
type Person struct {
Name string `json:"name,omitempty"`
}

跳过转换指定字段

1
2
3
type Person struct {
Name string `json:"-"`
}

将结构体变量序列化为JSON格式字符串

  • 直接得到的是字符数组,可以直接强制类型转换为字符串类型
1
2
3
4
5
6
7
import "encoding/json"

func main() {
var person Person
personJsonCharArray, err := json.Marshal(person)
personJsonString := string(personJsonCharArray)
}

将JSON格式字符串反序列化为结构体变量

1
2
3
4
func main() {
var person Person
json.Unmarshal([]byte(personJsonString), &person)
}

完成

参考文献

哔哩哔哩——尚硅谷
CSDN——jonssonyan
知乎——宁喆智毅