如果我有一些这样的JSON数据:
{
nullableID: ""
}
如何解组此结构:
help := struct {
ID *primitive.ObjectID `json:"nullableID",omitempty`
}{}
解码为help
使得help.ID == nil
具有ObjectID
实现Unmarshaler
接口并检查空字符串:
func (o *ObjectID) UnmarshalJSON(data []byte) error {
if err := json.Unmarshal(data, o); err != nil {
return err
}
if o == "" {
o = nil
}
return nil
}
如果ObjectID
类型是从另一个包导入的,则可以创建一个包装该类型的新类型。
This article对其进行了更详细的说明。