【Golang】 Go 语言中的 Struct、JSON 和 Map 互转:详细指南
Go 语言中的 Struct、JSON 和 Map 互转:详细指南
在 Go 语言中,处理 JSON 数据、结构体类型和映射(map)是与 API、配置或数据库交互时非常常见的任务。理解如何在这些数据类型之间无缝转换对于高效的 Go 编程至关重要。以下是如何将 Go 结构体转换为 JSON、将 JSON 转换为结构体、将映射转换为结构体以及反之的详细指南。
1. 将 JSON 转换为 Struct
在将 JSON 转换为 Go 结构体时,使用 Go 的 encoding/json
包。结构体字段应与 JSON 键匹配,字段标签有助于确保正确映射。
示例 1:JSON 转 Struct 转换
package main
import (
"fmt"
"encoding/json"
)
type People struct {
Name string `json:"name_title"`
Age int `json:"age_size"`
}
func JsonToStructDemo() {
jsonStr := `{
"name_title": "jqw",
"age_size": 12
}`
var people People
err := json.Unmarshal([]byte(jsonStr), &people)
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println(people)
}
func main() {
JsonToStructDemo()
}
解释:
- 字段标签: 结构体字段有如
json:"name_title"
的标签,指定了 JSON 数据中对应的键。标签帮助映射 JSON 键到结构体字段,无论大小写差异。 - JSON 解码: 使用
json.Unmarshal
函数将 JSON 数据解码到People
结构体中。 - 字段命名: 结构体中的字段名(
Name
,Age
)必须以大写字母开头,以便导出和访问。
2. 将 Struct 转换为 JSON
将 Go 结构体转换为 JSON 使用 json.Marshal
。结构体标签确保在生成的 JSON 字符串中使用正确的键。
示例 2:Struct 转 JSON 转换
package main
import (
"fmt"
"encoding/json"
)
type People struct {
Name string `json:"name_title"`
Age