把一个 JSON 字符串转为一个 go struct 有两种方式:

用 json.Unmarshal

1
2
3
4
data, err := ioutil.ReadAll(resp.Body)
if err == nil && data != nil {
    err = json.Unmarshal(data, value)
}

用 json.NewDecoder.Decode

1
err = json.NewDecoder(resp.Body).Decode(value)
io.Readerjson.Decoderjson.Unmarshal

下面是两种方式的使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package main

import (
    "encoding/json"
    "fmt"
    "strings"
)

func main() {
    const jsonStream = `{"Name": "Ed", "Text": "Knock knock."}`

    type Message struct {
        Name, Text string
    }

    var m Message

    // 用json.NewDecoder
    dec := json.NewDecoder(strings.NewReader(jsonStream))
    dec.Decode(&m)
    fmt.Printf("%s: %s\n", m.Name, m.Text)

    // 用 json.Unmarshal
    json.Unmarshal([]byte(jsonStream), &m)
    fmt.Printf("%s: %s\n", m.Name, m.Text)

    fmt.Println("done")
}

运行输出:

1
2
3
Ed: Knock knock.
Ed: Knock knock.
done

本文网址: https://golangnote.com/topic/82.html 转摘请注明来源