演示如何将 JSON 数据转换为对象,以及如何将对象转换为 JSON 数据:
package main

import (
    "encoding/json"
    "fmt"
)

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

func main() {
    // 将 JSON 数据转换为对象
    jsonData := `{"name":"Alice","age":30}`
    var person Person
    err := json.Unmarshal([]byte(jsonData), &person)
    if err != nil {
        fmt.Println("解析 JSON 失败:", err)
        return
    }
    fmt.Println("解析后的对象:", person)

    // 将对象转换为 JSON 数据
    person.Name = "Bob"
    person.Age = 25
    jsonData, err = json.Marshal(person)
    if err != nil {
        fmt.Println("转换为 JSON 失败:", err)
        return
    }
    fmt.Println("转换后的 JSON 数据:", string(jsonData))
}

运行结果:

解析后的对象: {Alice 30}
转换后的 JSON 数据: {"name":"Bob","age":25}

在这个示例中,我们首先将 JSON 数据{"name":"Alice","age":30}转换为Person对象。我们使用json.Unmarshal()函数将 JSON 数据解析为结构体对象,并传递一个指向目标对象的指针。解析成功后,我们就可以访问结构体对象的字段。

然后,我们修改了Person对象的字段值,并使用json.Marshal()函数将对象转换为 JSON 数据。转换成功后,我们可以得到表示该对象的 JSON 字符串。

这两个函数都是通过encoding/json包提供的。json.Unmarshal()函数用于将 JSON 数据解码为结构体对象,而json.Marshal()函数用于将结构体对象编码为 JSON 数据。

使用这些函数可以方便地进行 JSON 和对象之间的转换,非常适用于处理 API 请求和响应等场景。