在Go语言中,可以使用struct结构体来定义一些自定义类型。当我们需要将这些自定义类型转换为JSON格式时,可以使用 Go 自带的 encoding/json 包。
struct 结构体中的字段在转换为 JSON 格式时,遵循以下规则:
- 字段名首字母必须大写,以便将其导出,否则编码器无法访问该字段。
- 字段名后面的标记是“json”,它定义了该字段在 JSON 中的名称。
- 如果一个字段的值是零值,则不会在生成的 JSON 中添加该字段。
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
上面的代码定义了一个 Person 结构体,其中包含 Name 和 Age 两个字段,它们都被标记为 json。在将此结构体转换为 JSON 格式时,Name 和 Age 字段将分别映射到 name 和 age 属性。
Go 中的 json.Unmarshal() 函数可以用来将 JSON 文本解码为相应的结构体类型,如下所示:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
text := `{"name": "Tom", "age": 30}`
var p Person
if err := json.Unmarshal([]byte(text), &p); err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(p.Name, p.Age)
}
在上面的代码中,我们创建了一个名为 text 的 JSON 字符串,该字符串包含了名为 Name 和 Age 的两个属性。然后,在将 JSON 对象解码为 Person 结构体时,我们使用了 json.Unmarshal() 函数。最后,我们将解码后的 Person 对象中的 Name 和 Age 字段打印到控制台上。