golang的json反序列化
import (
"encoding/json"
"fmt"
)
/**
json 反序列化是指,将 json 字符串反序列化成对应的数据类型(比如结构体、map、切片)的操作
*/
type Person struct {
Name string `json:"nickName"`
Age int `json:"age"`
Birthday string //.... Sal float64
Skill string
}
func unmarshalStruct(){
// 细节 这里nickName 要与结构体中 tag标签保持一致
str := "{\"nickName\":\"老z\",\"age\":43,\"Birthday\":\"1981-11-11\",\"Sal\":8000,\"Skill\":\"画大饼\"}"
var person Person
err := json.Unmarshal([]byte(str), &person)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 person=%v person.Name=%v \n", person, person.Name)
}
func unmarshalMap(){
str := "{\"address\":\"隔壁\",\"age\":30,\"name\":\"老王\"}"
//定义一个map
var a map[string]interface{}
err := json.Unmarshal([]byte(str), &a)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 a=%v\n", a)
}
// 将json字符串,反序列化成切片
func unmarshalSlice(){
str := "[{\"address\":\"铁岭\",\"age\":\"64\",\"name\":\"赵本山\"}," +
"{\"address\":[\"安徽\",\"合肥\"],\"age\":\"18\",\"name\":\"许嵩\"}]"
var slice []map[string]interface{}
err := json.Unmarshal([]byte(str), &slice)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 slice=%v\n", slice)
}
注释都有,注意每个细节!!!