一尘不染

Golang中json encoding and marshalling有什么区别

go

试图学习如何在 golang 中编写 RESTFUL api,但不确定 JSON encoding and marshalling之间的区别是什么,或者它们是否相同?


阅读 229

收藏
2021-12-27

共1个答案

一尘不染

Marshal 和 Unmarshal 将字符串转换为 JSON,反之亦然。编码和解码将流转换为 JSON,反之亦然。

下面的代码显示了 marshal 和 unmarshal 的工作

type Person struct {
First string
Last string
}
func main() {
    /* This will marshal the JSON into []bytes */

    p1 := Person{"alice", "bob"}
    bs, _ := json.Marshal(p1)
    fmt.Println(string(bs))

    /* This will unmarshal the JSON from []bytes */

    var p2 Person
    bs = []byte(`{"First":"alice","Last":"bob"}`)
    json.Unmarshal(bs, &p2)
    fmt.Println(p2)

}

编码器和解码器将结构写入流的切片或从流的切片中读取数据并将其转换为结构。在内部,它还实现了 marshal 方法。唯一的区别是,如果您想处理字符串或字节,请使用 marshal,如果您想读取或写入某个编写器接口的任何数据,请使用编码和解码。

2021-12-27