golang中json包序列化與反序列化
阿新 • • 發佈:2021-10-16
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)) }