如何在 Golang 中将 JSON 解码为对象?
go programmingserver side programmingprogramming
假设我们有一个如下所示的 JSON。
{ "name":"Mukul Latiyan", "age":10, "sports":[ "football", "tennis", "cricket" ] }
现在,我们希望将此 JSON 转换为 struct 字段,以便我们稍后可以访问这些字段,甚至还可以对其进行迭代。
为了做到这一点,我们首先需要创建一个满足上述 JSON 字段的 struct。
下面显示的 struct 非常适合上述 JSON。
type Person struct { Name string `json:"name"` Age int `json:"age"` Sports []string `json:"sports"` }
现在,下一步是在类型转换的帮助下将上述 JSON 对象转换为 Go 中的字节切片,然后,我们将该字节切片与 Person 对象一起作为第二个参数传递给 Unmarshal() 函数。
示例
考虑下面显示的代码。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Sports []string `json:"sports"` } func main() { text := []byte( `{ "name":"Mukul Latiyan", "age":10, "sports":["football","tennis","cricket"] }`) var p Person err := json.Unmarshal(text, &p) if err != nil { panic(err) } fmt.Println(p.Name) fmt.Println(p.Age) for _, value := range p.Sports { fmt.Println(value) } }
在上面的代码中,调用Unmarshal函数后,我们只是打印了struct不同字段的值。
如果我们在上面的代码上运行命令go run main.go,那么我们将在终端中得到以下输出。
输出
Mukul Latiyan 10 football tennis cricket