为了账号安全,请及时绑定邮箱和手机立即绑定

如何将空字符串解组为 nil

如何将空字符串解组为 nil

Go
慕村9548890 2023-07-26 19:33:32
如果我有一些像这样的 JSON 数据:{   nullableID: ""   }我怎样才能解组这个结构:help := struct {   ID *primitive.ObjectID `json:"nullableID",omitempty`   }{}解码为help这样help.ID == nil
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

实现ObjectID接口Unmarshaler并检查空字符串:


func (o *ObjectID) UnmarshalJSON(data []byte) error {

  if err := json.Unmarshal(data, o); err != nil {

    return err

  }

  if string(*o) == "" {

    o = nil

  }

  return nil

}

如果该ObjectID类型是从另一个包导入的,您可以创建一个包装该类型的新类型:


// objID is a copy of primitive.ObjectID but with it's own json unmarshalling.

type objID struct {

  *primitive.ObjectID

}


func (o *objID) UnmarshalJSON(data []byte) error {

  // Same implementation as above

}



查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信