如何将空字符串解组为nil

问题描述 投票:0回答:1

如果我有一些这样的JSON数据:

{
  nullableID: ""
}

如何解组此结构:

help := struct {
  ID *primitive.ObjectID `json:"nullableID",omitempty`
}{}

解码为help使得help.ID == nil

json go unmarshalling
1个回答
0
投票

具有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对其进行了更详细的说明。

© www.soinside.com 2019 - 2024. All rights reserved.