在 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 数据处理的效率。