user.go
package main
// 必须大写才可以被序列化
// 可以使用json后指定序列化的名字
type User struct {
Name string
Age int
// 如果不是指针,也是可以的
Obj *SubObj
}
func NewUser(name string, age int, obj *SubObj) *User {
return &User{Name: name, Age: age, Obj: obj}
}
sub_obj.go
package main
type SubObj struct {
Name string
Age int
}
main.go
package main
import (
"encoding/json"
"fmt"
)
func main() {
user := NewUser("jianan", 29, &SubObj{
Name: "xx",
Age: 18,
})
// 序列化测试
b, e := json.Marshal(user)
if e == nil {
fmt.Println(b)
fmt.Println(string(b))
}
// 反序列化
// 可以不用填入字段
var user2 User
e2 := json.Unmarshal(b, &user2)
if e2 == nil {
fmt.Println(user2.Obj.Name)
}
}
/*
[123 34 78 97 109 101 34 58 34 106 105 97 110 97 110 34 44 34 65 103 101 34 58 50 57 44 34 79 98 106 34 58 123 34 78 97 109 101 34 58 34 120 120 34 44 34 65 103 101 34 58 49 56 125 125]
{"Name":"jianan","Age":29,"Obj":{"Name":"xx","Age":18}}
xx
*/