Go语言中的JSON包提供了强大的功能来处理JSON数据。在Go中,结构体(struct)字段可以通过 json 标签(Tag)来指定如何序列化或反序列化。以下是一些常用的 json 标签选项:
omitempty :
如果字段为零值(zero value),则在序列化时忽略该字段。
string :
将该字段序列化为JSON字符串。
使用jsoniter解析不能有string 如:`json:"id,string"`
- :
忽略该字段,不进行序列化或反序列化。
inline :
将匿名结构体内部的字段作为外层结构体的字段序列化。
omitempty 与 inline :
组合使用,当匿名结构体的所有字段都是零值时,整个结构体将被忽略。
重命名字段:
通过 json:"name" 指定JSON中的字段名,例如 json:"userID,string" 。
此外,还可以通过 json 标签来指定字段的顺序,例如 json:"1" 表示第一个字段, json:"2" 表示第二个字段,依此类推。
这里是一个简单的示例,展示了如何在Go的结构体中使用 json 标签:
type Example struct {
ID int `json:"id"`
Name string `json:"name,omitempty"`
Age int `json:"age"`
Ignored string `json:"-"`
Inline Inner `json:",inline"`
}
type Inner struct {
Detail string `json:"detail"`
}
在这个例子中, Name 字段如果为空字符串将被忽略, Ignored 字段将不会被序列化或反序列化, Inline 字段是一个匿名结构体,其内部字段将作为 Example 结构体的一部分进行序列化。