golang中json包序列化与反序列化

package main

import (
	"encoding/json"
	"fmt"
	"reflect"
)

type Info struct {
	// 结构体的字段,首字母必须大写,否则序列化时读取不到
	Title string
	Count int
}
type Address struct {
	// 想要序列化后的字段为小写,可以在结构体中写tag实现
	City string `json:"city"`
	Num  int    `json:"num"`
}

func main() {
	v1 := []interface{}{
		"武沛齐",
		123,
		true,
		3.14,
		map[string]interface{}{
			"name": "张三",
			"age":  28,
		},
		Address{City: "北京", Num: 888},
		Info{"python", 666},
	}

	// 序列化
	// 通过json序列化结构体类型,结构体的字段首字母必须大写,如果想序列化后的字段为小写,可以打个tag标签
	bret, _ := json.Marshal(v1)
	ret := string(bret)  // 序列化后的是[]byte字节切片,需要转换为字符串
	fmt.Println(ret, reflect.TypeOf(ret))

	// 反序列化
	content := `["武沛齐",123,true,3.14,{"age":28,"name":"张三"},{"city":"北京","num":888},{"Title":"python","Count":666}]`
	var dataSlice1 []interface{}
	json.Unmarshal([]byte(content), &dataSlice1)
	fmt.Println(dataSlice1, reflect.TypeOf(dataSlice1))

}

  

posted @ 2021-10-16 17:02  专职  阅读(109)  评论(0编辑  收藏  举报