反序列化到map
示例程序:
func main() {
mp := map[string]bool{
"a": false,
}
s1 := "{\"b\": true, \"c\": false}"
err := json.Unmarshal([]byte(s1), &mp)
if err != nil {
fmt.Println("err:", err)
return
}
fmt.Println(mp)
s1 = "{\"a\": true, \"b\": false, \"d\": true, \"e\": false}"
err = json.Unmarshal([]byte(s1), &mp)
if err != nil {
fmt.Println("err:", err)
return
}
fmt.Println(mp)
s1 = "{}"
err = json.Unmarshal([]byte(s1), &mp)
if err != nil {
fmt.Println("err:", err)
return
}
fmt.Println(mp)
}
输出结果:
map[a:false b:true c:false]
map[a:true b:false c:false d:true e:false]
map[a:true b:false c:false d:true e:false]
结论:
将JSON反序列化到map中,实际上是向map添加key-value。
反序列化到结构体
示例程序:
type testJSON struct {
Name string
Addr string
Age int
}
func main() {
t1 := testJSON{
Name: "初始化名字",
Age: 0,
}
s1 := "{\"addr\": \"这是一个地址\"}"
err := json.Unmarshal([]byte(s1), &t1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t1)
s1 = "{\"Name\": \"张三\", \"age\":18}"
err = json.Unmarshal([]byte(s1), &t1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t1)
}
输出结果:
{初始化名字 这是一个地址 0}
{张三 这是一个地址 18}
结论:
反序列化到结构体,实际上是修改结构体的成员。