如果结构体是什么(有些字段指定了值
细说Golang的JSON解析
golang JSON技巧
Go - 如何解析 JSON 数据?mapstruct包
鼠标勾留在json.Marshal上看下辅佐就一目了然了.
tag大都为struct转json时生效 /* // Field appears in JSON as key "myName". Field int `json:"myName"` //理解为 Field in json // Field appears in JSON as key "myName" and // the field is omitted from the object if its value is empty, // as defined above. Field int `json:"myName,omitempty"` // Field appears in JSON as key "Field" (the default), but // the field is skipped if empty. // Note the leading comma. Field int `json:",omitempty"` // Field is ignored by this package. Field int `json:"-"` // Field appears in JSON as key "-". Field int `json:"-,"` */ 后台出去时 // 出去时, 如果布局体是什么(有些字段指定了值,有些没有),就构建出什么样子的json type user struct { Age int `json:"age"` Name string `json:"name"` //Age int `json:"age,omitempty"` } func main() { u := user{ Name: "m1", } b, _ := json.Marshal(u) fmt.Println(string(b)) } //{"age":0,"name":"m1"} //如果是零值时,毙失这个字段 //omitempty的字段: 如果改字段为零值,则毙失这个字段 //布局体加了omitempty字段, 则出去时, 如果struct实例字段为零值, 则会毙失这个字段 type user struct { Name string `json:"name"` //Age int `json:"age"` Age int `json:"age,omitempty"` } func main() { u := user{ Name: "m1", Age: 0, } b, _ := json.Marshal(u) fmt.Println(string(b)) } //{"name":"m1"} // - 毙失这个字段 type user struct { Name string `json:"name"` //Age int `json:"age"` //Age int `json:"age,omitempty"` Age int `json:"-"` } func main() { u := user{ Name: "m1", Age: 0, } b, _ := json.Marshal(u) fmt.Println(string(b)) } //{"name":"m1"} // 转换布局体类型(如果转换掉败,则保存原有类型,不会报错) type user struct { Name string `json:"name"` //Age int `json:"age"` //Age int `json:"age,omitempty"` //Age int `json:"-"` Age int `json:",string"` } func main() { u := user{ Name: "m1", Age: 22, } b, _ := json.Marshal(u) fmt.Println(string(b)) } //{"name":"m1","Age":"22"} 前台进来时 // 进来时, 如果json类型和struct类型不匹配,则报错 type user struct { Name string `json:"name"` Age int `json:"age"` } func main() { var jsonStr = ` { "name":"m1", "age":"22" } ` var u user err := json.Unmarshal([]byte(jsonStr), &u) if err != nil { fmt.Println(err) } fmt.Println(u) } //json: cannot unmarshal string into Go struct field user.age of type int //{m1 0} // 进来时,如果json字段里没有, 则struct以零值填充 type user struct { Name string `json:"name"` Age int `json:"age"` } func main() { var jsonStr = ` { "name":"m1" } ` var u user err := json.Unmarshal([]byte(jsonStr), &u) if err != nil { fmt.Println(err) } fmt.Println(u) } //{m1 0}[go]布局体和json转换
标签:
原文地点:https://www.cnblogs.com/iiiiiher/p/12118352.html
,温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32682.html