JsonTag是Golang中的一种数据序列化标签,它可以在结构体的字段上添加一些特定的标签,以便在序列化和反序列化的时候按照规定的格式进行处理。它的格式为:json:"字段名,字段标签",字段标签可以是omitempty、string、int等取值,其中,omitempty表示如果该字段的值为空则不进行序列化,string表示将该字段序列化成字符串,int表示将该字段序列化成整型。
下面通过一个实例来演示JsonTag的用法:
type Model struct { Name string `json:"name,omitempty"` Age int `json:"age,string"` } func main() { m := Model{ Name: "Tom", Age: 18, } data, err := json.Marshal(m) if err != nil { fmt.Println("json marshal failed, err:", err) return } fmt.Println(string(data)) }
上面的代码中,定义了一个Model的结构体,在Name和Age字段上加了JsonTag,分别为omitempty和string,创建了一个Model的实例,使用json.Marshal函数将该实例序列化成json字符串,最终得到的结果是:{"age":"18"},可以看出,Name字段的值为空,根据omitempty标签的设置,Name字段并没有被序列化,而Age字段的值被序列化成字符串类型,这就是JsonTag的用法。
JsonTag是Golang中一种强大的数据序列化标签,可以让我们在序列化和反序列化的时候按照指定的格式进行处理,提高了代码的可读性和可维护性。