GO json.Unmarshal 引用结构体
时间: 2023-12-15 20:05:55 浏览: 84
结构体的两种引用
在Go语言中,可以使用 `json.Unmarshal` 来解析JSON数据并将其存储到一个已定义的结构体中。如果你希望在解析过程中引用已定义的结构体,可以使用指针。
以下是一个示例代码:
```go
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
type Family struct {
Father *Person `json:"father"`
Mother *Person `json:"mother"`
}
func main() {
jsonData := `{
"father": {
"name": "John",
"age": 40
},
"mother": {
"name": "Jane",
"age": 38
}
}`
var family Family
err := json.Unmarshal([]byte(jsonData), &family)
if err != nil {
fmt.Println("Failed to unmarshal JSON:", err)
return
}
fmt.Println("Father:", family.Father.Name)
fmt.Println("Mother:", family.Mother.Name)
}
```
在上述代码中,我们定义了两个结构体 `Person` 和 `Family`。`Family` 结构体包含了两个指向 `Person` 结构体的指针字段 `Father` 和 `Mother`。我们将 JSON 数据解析到 `Family` 结构体中时,可以通过传递指向 `Family` 结构体的指针给 `json.Unmarshal` 来引用已定义的结构体。
在示例中,我们将 JSON 数据解析到了 `family` 变量中,并通过 `family.Father.Name` 和 `family.Mother.Name` 来访问解析后的数据。
请注意,在指向结构体的指针字段上进行解析时,确保已经为指针字段分配了内存,可以使用 `&` 操作符来获取指针。
阅读全文