JSON序列化
尚硅谷Golang課
JSON序列化
JSON 格式 {“鍵”:“值”} {“鍵”:“值”,“鍵2”:“值2”} {“鍵”:“值”,“鍵2”:[“值2數組”,值2數組]}
type Monster struct {
Name string `json:"name"` //反射機制
Age int `json:"age"`
Sal float64 `json:"sal"`
}
func test1() {
monster1 := Monster{
Name: "牛魔王",
Age: 50,
Sal: 8000.0,
}
data, err := json.Marshal(&monster1)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(data))
}
//把map序列化
func testMap() {
var mapA map[string]interface{} = make(map[string]interface{})
mapA["name"] = "紅孩兒"
mapA["age"] = 18
data, err := json.Marshal(&mapA)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(data))
}
//切片序列化
func testSlice() {
var slice1 []map[string]interface{}
var m1 map[string]interface{} = make(map[string]interface{})
m1["name"] = "珍娜"
m1["age"] = 40
slice1 = append(slice1, m1)
var m2 map[string]interface{} = make(map[string]interface{})
m2["name"] = "索爾"
m2["age"] = 25
slice1 = append(slice1, m2)
data, err := json.Marshal(slice1)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(data))
}
//基本數據類型序列化,沒啥意義 因為他沒有key 就只會轉出一個string
func testFloat64() {
var num1 float64 = 123.45
data, err := json.Marshal(num1)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(data))
}
//反序列化
func unmarshal() {
str := `{"name":"牛魔王","age":50,"sal":8000}`
//用`...`包起來保留原格式
//定義一個實例來接收 這個接收的格式一定要能符合對應
var heroes Monster
err := json.Unmarshal([]byte(str), &heroes)
if err != nil {
fmt.Println(err)
}
fmt.Println(heroes)
}
func unmarshalMap() {
str := `{"age":18,"name":"紅孩兒"}`
var a map[string]interface{}
//不用make因為unmarshal函數內封裝了
err := json.Unmarshal([]byte(str), &a)
if err != nil {
fmt.Println(err)
}
fmt.Println(a)
}
func main() {
test1()
testMap()
testSlice()
testFloat64()
unmarshal()
unmarshalMap()
}
上次修改於 2021-08-01
此篇文章的評論功能已經停用。