struct转JSON
我们可以在struct的attribute后指定该struct被序列化成JSON后的key的值,这被称为Struct Tag。
Struct tag 可以决定 Marshal 和 Unmarshal 函数如何在序列化和反序列化数据时,JSON key的值。
如果没有指定,则取该attribute对应全小写字符串作为key的值。
package main
import (
"encoding/json"
"fmt"
)
type User struct {
UserName string `json:"username"`
NickName string `json:"nickname"`
Age int
Birthday string `json:"birth"`
Sex string
Email string
Phone string
}
/*结构体转json*/
func testStruct() {
user1 := &User{
UserName: "user1",
NickName: "上课看似",
Age: 18,
Birthday: "2008/8/8",
Sex: "男",
Email: "mahuateng@qq.com",
Phone: "110",
}
dataBytes, err := json.Marshal(user1)
if err != nil {
fmt.Printf("json.marshal failed, err:", err)
return
}
fmt.Printf("%s \n", string(dataBytes))
}
func main() {
testStruct()
fmt.Println("----")
}
//output
{"username":"user1","nickname":"上课看似","Age":18,"birth":"2008/8/8","Sex":"男","Email":"mahuateng@qq.com","Phone":"110"}
----
...