encoding/json包所有可用结构体标签值查询
Go encoding/json 结构体标签全量说明
以下是encoding/json包支持的所有结构体标签选项,覆盖序列化和反序列化全场景:
- 指定JSON字段名:直接定义映射的JSON键名,比如
json:"user_name",序列化时结构体字段会对应JSON的user_name键,反序列化时也会将该键值赋值给结构体字段。 omitempty:添加该选项后,当字段值为对应类型的零值(如字符串空值""、整数0、布尔false、指针nil等)时,序列化JSON会忽略这个字段。"-":单独使用该符号时,字段会被完全排除在序列化和反序列化流程外,无论字段值是什么都不会被处理。- 组合指定字段名+
omitempty:格式如json:"nickname,omitempty",既自定义JSON字段名为nickname,又在字段值为零值时忽略它。 - 仅
omitempty(不指定字段名):格式如json:",omitempty",使用结构体字段本身的名称作为JSON键,同时在零值时忽略字段。 string:针对数值类型(int、float系列等),格式如json:"age,string",序列化时会把数值转成JSON字符串类型(比如"age":"25"而非"age":25),反序列化时也能正确将JSON字符串转回对应数值类型。- 仅
string(不指定字段名):格式如json:",string",使用结构体字段名作为JSON键,同时将数值类型序列化为字符串。
示例代码
type Profile struct { ID int `json:"user_id"` // 映射到JSON的user_id键 Username string `json:"name"` // 映射到JSON的name键 Age int `json:"user_age,string"` // 数值转字符串序列化 Bio string `json:"bio,omitempty"` // 空字符串时忽略 Token string `json:"-"` // 完全排除该字段 Followers int `json:",omitempty"` // 零值0时忽略,键名用Followers }
内容的提问来源于stack exchange,提问作者Doug Tea
相关产品推荐
相关产品推荐

