我有以下结构:
type Item struct {
Id string `json:"id"`
Name string `json:"name"`
Products []*Product `json:"products"`
}
func (i *Item) Transform(input []byte) error {
return json.Unmarshal(input, i)
}
Products我必须对它的成员和它的嵌套成员执行多项操作,例如[]*Variant{}or[]*Shipping{}等。
因为结构中的大部分切片Item都是指针切片,所以我处理这些数据的代码如下所示:
for _, product := range i.Products {
if product == nil {
continue
}
for _, variant := range product.Variants {
if variant == nil {
continue
}
for _, shipping := range shippings {
if shipping == nil {
continue
}
// and so on...
}
}
}
有什么方法可以模仿指针切片中的值吗omitempty?nil下面的例子。
JSON 输入:
{
"products": [
null,
{},
null
]
}
输出,相当于:
input := Item{
Products: []Product{ {} }, // without nulls
}
我尝试使用omitemptyon[]*Property但它不起作用。我还尝试使用非指针值,但随后 Go 将每个 null 初始化为默认结构值。
慕田峪9158850
相关分类