演示如何将 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 请求和响应等场景。