前言
Go语言通过JSON序列化和反序列化
定义结构体
json:"name"
:通过json标签,可以重新指定序列化之后的属性名,如果不指定json标签,则将结构体属性名作为序列化的json字符串的属性名
1 2 3
| type Person struct { Name string `json:"name"` }
|
空值跳过配置
- 如果在Tag
json:""
中指定第二个参数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
知乎——宁喆智毅