在 golang 中,可以通过以下步骤将 json 数据转换为结构体:定义一个结构体,字段名称与 json 属性名称匹配,并使用 json 标签指定 json 字段名称。使用 encoding/json 包中的 json.unmarshal 函数解析 json 字符串并将其转换为一个指向结构体的指针。检查解析错误。访问结构体字段以提取数据。

如何在 Golang 中将 JSON 数据转换为结构体
简介
Golang 提供了 encoding/json 包来方便地处理 JSON 数据。它允许您将 JSON 数据转换为结构体,从而可以轻松地访问和操作 JSON 数据。
立即学习“go语言免费学习笔记(深入)”;
实战案例
假设您有一个 JSON 字符串:
{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer"
}并希望将其转换为一个结构体。以下是步骤:
- 定义结构体:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Occupation string `json:"occupation"`
}-
struct关键字创建了一个新的结构体类型。 - 字段名称与 JSON 属性名称匹配。
-
json标签指定了 JSON 字段名称。
- 解析 JSON 数据:
import "encoding/json"
var jsonStr = `{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer"
}`
var person Person
err := json.Unmarshal([]byte(jsonStr), &person)
if err != nil {
// 处理错误
}-
json.Unmarshal函数解析 JSON 字符串并将其转换为指向结构体的指针。 -
jsonStr是 JSON 字符串。 -
person是目标结构体。 - 如果有错误,
Unmarshal将返回该错误。
- 访问结构体字段:
fmt.Println(person.Name) // "John Doe" fmt.Println(person.Age) // 30 fmt.Println(person.Occupation) // "Software Engineer"
- 一旦 JSON 数据被正确解析,您就可以像访问任何其他结构体成员一样访问结构体字段。
注意
- 确保结构体字段的类型与 JSON 属性中的值类型兼容。
- JSON 属性名称必须与结构体字段名称相匹配,除非您使用
json标签。 - 如果 JSON 数据无法解析,请在
Unmarshal中检查错误。










