Go语言结构体转json的坑
标签(空格分隔): go
json.Marshal()
JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出,所以必须通过struct tag定义来实现。 针对JSON的输出,我们在定义struct tag的时候需要注意的几点是: - 字段的tag是"-",那么这个字段不会输出到JSON - tag中带有自定义名称,那么这个自定义名称会出现在JSON的字段名中 - tag中如果带有"omitempty"选项,那么如果该字段值为空,就不会输出到JSON串中 - 如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串
代码示例
package main import ( "encoding/json" "fmt" ) func main() { type UserInfo struct { Id int Name string Address string } type Comiket struct { id int title string } type Test struct { Id int `json:"-"` Content string `json:"content"` IsDel bool `json:",string"` Type int `json:"type, omitempty"` } c := Comiket{1, "AS动漫游戏嘉年华"} v, error := json.Marshal(c) fmt.Println(string(v)) fmt.Println(error) fmt.Println("------------------") User := UserInfo{1, "taylor", "USA"} b, err := json.Marshal(User) fmt.Println(string(b)) fmt.Println(err) fmt.Println("------------------") t := Test{Id:1, Content:"hello world", IsDel:true} val, _ := json.Marshal(t) fmt.Println(string(val))
}
来源:https://www.cnblogs.com/yanweifeng/p/10578000.html