即使在 omitempty 标签中也有空结构
Got empty struct even in omitempty tag
我对内联使用了相同的结构,并使用 omitempty 标记嵌套在主结构中。因为我没有在键中分配任何值,所以我在 JSON 中得到了空结构。在这种情况下,有人可以帮助我吗?
package main
import (
"encoding/json"
"fmt"
)
type Customer struct {
Name string `json:"name,omitempty" bson:"name"`
Gender string `json:"gender,omitempty" bson:"gender"`
Address `json:",inline" bson:",inline" `
OptionalAddresses []Address `json:"optionalAddresses,omitempty" bson:"optionalAddresses"`
}
type Address struct {
Country string `json:"country,omitempty" bson:"country"`
ZoneDetail Zone `json:"zone,omitempty" bson:"zone"`
}
type Zone struct {
Latitude float64 `json:"lat,omitempty" bson:"lat,omitempty"`
Longitude float64 `json:"lon,omitempty" bson:"lon,omitempty"`
}
func main() {
cust := Customer{Name: "abc", Gender: "M"}
dataByt, _ := json.Marshal(cust)
fmt.Println(string(dataByt))
}
输出:
{"姓名":"abc","性别":"M","区域":{}}
'omitempty' 如果字段值为空,则省略该字段。但是在 Golang 中,我们没有结构的空值,您可以使用指向结构的指针(在您的情况下为 *Zone)。
...
type Address struct {
Country string `json:"country,omitempty" bson:"country"`
ZoneDetail *Zone `json:"zone,omitempty" bson:"zone"`
}
...
我对内联使用了相同的结构,并使用 omitempty 标记嵌套在主结构中。因为我没有在键中分配任何值,所以我在 JSON 中得到了空结构。在这种情况下,有人可以帮助我吗?
package main
import (
"encoding/json"
"fmt"
)
type Customer struct {
Name string `json:"name,omitempty" bson:"name"`
Gender string `json:"gender,omitempty" bson:"gender"`
Address `json:",inline" bson:",inline" `
OptionalAddresses []Address `json:"optionalAddresses,omitempty" bson:"optionalAddresses"`
}
type Address struct {
Country string `json:"country,omitempty" bson:"country"`
ZoneDetail Zone `json:"zone,omitempty" bson:"zone"`
}
type Zone struct {
Latitude float64 `json:"lat,omitempty" bson:"lat,omitempty"`
Longitude float64 `json:"lon,omitempty" bson:"lon,omitempty"`
}
func main() {
cust := Customer{Name: "abc", Gender: "M"}
dataByt, _ := json.Marshal(cust)
fmt.Println(string(dataByt))
}
输出:
{"姓名":"abc","性别":"M","区域":{}}
'omitempty' 如果字段值为空,则省略该字段。但是在 Golang 中,我们没有结构的空值,您可以使用指向结构的指针(在您的情况下为 *Zone)。
...
type Address struct {
Country string `json:"country,omitempty" bson:"country"`
ZoneDetail *Zone `json:"zone,omitempty" bson:"zone"`
}
...