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