go语言json的序列化和反序列化

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
*/

猜你喜欢

转载自blog.csdn.net/themagickeyjianan/article/details/107541624