在 golang 中,我们可以使用 encoding/json
包来将一个 JSON 格式的字节流解析为对应的结构体。具体示例如下:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonBytes := []byte(`{"name":"John","age":30}`)
var person Person
err := json.Unmarshal(jsonBytes, &person)
if err != nil {
fmt.Println("Error:", err.Error())
return
}
fmt.Println(person.Name, person.Age) // 输出:John 30
}
上述代码中,我们定义了一个名为 Person
的结构体,并且通过在结构体字段后添加 json
标签指定了该字段在 JSON 中的名称。然后,我们创建了一个 JSON 字节流并将其解析到一个空的 Person
结构体中。最后,我们输出了该结构体中的字段值。
需要注意的是,在调用 Unmarshal()
函数时需要传入两个参数:要解析的 JSON 字节流和目标结构体对象的指针。由于 Unmarshal()
函数会修改目标结构体对象中的值,因此我们需要传入它的指针。如果传入普通变量而不是指针,则函数无法成功修改变量的值。
另外需要注意的是,在实际开发中,我们应该始终检查错误以确保程序正常运行,并且在处理不确定数据时应特别小心以避免出现意外情况。