Golang 中的 JSON 编解码如何实现?

在 Golang 中,JSON 编解码主要通过 encoding/json 标准库包实现。

该包主要提供了:

  • json.Marshal:将 Go 语言对象编码为 JSON 格式的数据
  • json.Unmarshal:将 JSON 格式的数据解码为 Go 语言对象

例如:

编解码结构体:

type User struct {
    Name string `json:"name"`
    Age  int    `json:"age"` 
}

// 编码
user := User{"John", 30}
bytes, _ := json.Marshal(user)
fmt.Println(string(bytes))
// {"name":"John","age":30}

// 解码
var user2 User
json.Unmarshal(bytes, &user2)
fmt.Println(user2.Name, user2.Age)
// John 30

编解码map:

// 编码
m := map[string]int{"a": 1, "b": 2}
bytes, _ := json.Marshal(m)
fmt.Println(string(bytes))
// {"a":1,"b":2}

// 解码
var m2 map[string]int
json.Unmarshal(bytes, &m2)
fmt.Println(m2["a"], m2["b"])
// 1 2

编解码slice:

// 编码
s := []string{"a", "b", "c"}
bytes, _ := json.Marshal(s)
fmt.Println(string(bytes))
// ["a","b","c"]

// 解码
var s2 []string  
json.Unmarshal(bytes, &s2)
fmt.Println(s2)
// [a b c]

所以,encoding/json 包提供了非常方便的 JSON 编解码方法,可以轻松实现 Go 语言对象与 JSON 格式数据之间的相互转换。这在网络服务开发及前后端交互中是必不可少的。

其他的一些使用场景如下:

  • 配置文件使用 JSON 格式,启动时加载配置
  • 与第三方 JSON API 交互
  • Go 语言与前端 JS/Vue 之间的数据交换
  • 对象/数据序列化,存储到文件或数据库

所以总结来说,掌握 encoding/json 包是每一个 Golang 开发者的必备技能。它可以极大提高 JSON 数据处理的效率。