淘先锋技术网

首页 1 2 3 4 5 6 7

在使用 Golang 编写程序时,Json 是一个不可避免的数据格式。在处理 Json 数据时,默认值(default)是一个经常用到的功能。下面将介绍 Golang 中 Json 的默认值问题。

//示例1
type Person struct{
Name string `json:"name"`
Age int `json:"age"`
}
func main(){
jsonStr := `{"name":"Lucy"}`
var p Person
err := json.Unmarshal([]byte(jsonStr),&p)
if err != nil{
fmt.Println(err)
}
fmt.Println(p.Name,p.Age)
}
输出:
Lucy 0

示例一中,我们将 Json 数据 {"name":"Lucy"} 解析到 Person 结构体中。由于 Person 结构体中没有设置 Age 字段的属性,因此默认值为 0。

//示例2
type Person struct{
Name string `json:"name"`
Age int `json:"age"`
Score float64 `json:"score,omitempty"`
}
func main(){
jsonStr := `{"name":"Lucy","age":18}`
var p Person
err := json.Unmarshal([]byte(jsonStr),&p)
if err != nil{
fmt.Println(err)
}
fmt.Println(p.Score)
}
输出:
0

示例二中,我们将 Json 数据 {"name":"Lucy","age":18} 解析到 Person 结构体中。由于 Person 结构体中设置了 Score 字段的omitempty属性为true,因此在 Json 数据中没有 score 字段时其值为空,即默认值为 0。

以上就是 Golang 中 Json 的默认值问题的介绍,希望对您有所帮助。