Golang笔记

把JSON 字符串转为go struct 的两种方式

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

用 json.Unmarshal

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

用 json.NewDecoder.Decode

err = json.NewDecoder(resp.Body).Decode(value)

选择那种方式,取决于自己的字符串来源:

  • 当来自 io.Reader stream 时就选用 json.Decoder
  • JSON 数据本来就在内存里,就选用 json.Unmarshal

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

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")
}

运行输出:

Ed: Knock knock.
Ed: Knock knock.
done
本文网址: https://golangnote.com/topic/82.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles