由于空字符串是Go的零/默认值string,因此我决定将所有此类字段定义为interface{}。例如
string
interface{}
type student struct { FirstName interface{} `json:"first_name"` MiddleName interface{} `json:"middle_name"` LastName interface{} `json:"last_name"` }
如果该值不适用于该特定字段,则我正在发送数据的应用程序期望使用null而不是空字符串。
这是正确的方法吗?或者有人可以向我指出比这更好的方法。
在json包文档中:
指针值编码为指向的值。nil指针编码为空JSON对象。
因此,您可以存储指向字符串的指针,如果不为nil,则将其编码为字符串;如果为nil,则将其编码为“ null”
type student struct { FirstName *string `json:"first_name"` MiddleName *string `json:"middle_name"` LastName *string `json:"last_name"` }