1. 程式人生 > 其它 >golang中json包序列化與反序列化

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))

}