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