1. 程式人生 > 其它 >Golang json的反序列化

Golang json的反序列化

介紹

  json反序列化是指將json字串反序列化成對應的資料型別(比如結構體、map、切片)的操作

1.反序列換結構體

package main

import (
    "encoding/json"
    "fmt"
)

//定義一個結構體
type Monster struct {
    Name     string
    Age      int
    Birthday string
    Sal      float64
    Skill    string
}

//將json字串反序列化成struct
func unmarshalStruct() {
    str :
= "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2021-11-11\",\"Sal\":80000,\"Skill\":\"牛魔拳\"}" //定義一個Monster結構體的例項 var monster Monster err := json.Unmarshal([]byte(str), &monster) if err != nil { fmt.Printf("unmarshal err=%v", err) } fmt.Printf("反序列化後 monster=%v", monster) } func main() {
//演示結構體反序列化 unmarshalStruct() }

2.反序列化Map

package main

import (
    "encoding/json"
    "fmt"
)

//將json反序列化成map
func unmarshalMap() {
    str := "{\"address\":\"洪崖洞\",\"age\":30,\"name\":\"紅孩兒\"}"
    //定義一個map
    var a map[string]interface{}
    //反序列化
    //注意:反序列化map,不需要make,因為make操作被封裝到Unmarshal函式
err := json.Unmarshal([]byte(str), &a) if err != nil { fmt.Printf("unmarshal err=%v\n", err) } fmt.Printf("反序列化後 a=%v\n", a) } func main() { unmarshalMap() }

3.反序列化slice

package main

import (
    "encoding/json"
    "fmt"
)

//將json反序列化成切片
func unmarshalSlice() {
    str := "[{\"address\":\"beijiang\",\"age\":7,\"name\":\"jack\"},{\"address\":[\"shanghai\",\"xiaweiyi\"],\"age\":20,\"name\":\"tom\"}]"

    //定義一個slice
    var slice []map[string]interface{}
    //反序列化,不需要make,因為make操作被封裝到Unmarshal函式
    err := json.Unmarshal([]byte(str), &slice)
    if err != nil {
        fmt.Printf("unmarshal err=%v\n", err)
    }
    fmt.Printf("反序列化後 slice=%v\n", slice)
}

func main() {
    unmarshalSlice()
}