一尘不染

为JSON字段分配null而不是空字符串

go

由于空字符串是Go的零/默认值string,因此我决定将所有此类字段定义为interface{}。例如

type student struct {
    FirstName  interface{} `json:"first_name"`
    MiddleName interface{} `json:"middle_name"`
    LastName   interface{} `json:"last_name"`
}

如果该值不适用于该特定字段,则我正在发送数据的应用程序期望使用null而不是空字符串。

这是正确的方法吗?或者有人可以向我指出比这更好的方法。


阅读 295

收藏
2020-07-02

共1个答案

一尘不染

json包文档中

指针值编码为指向的值。nil指针编码为空JSON对象。

因此,您可以存储指向字符串的指针,如果不为nil,则将其编码为字符串;如果为nil,则将其编码为“ null”

type student struct {
  FirstName  *string `json:"first_name"`
  MiddleName *string `json:"middle_name"`
  LastName   *string `json:"last_name"`
}
2020-07-02