使用 sql.NullString 字段编组 Go 结构体时,可能会遇到输出 JSON,其中包含表示空字符串。但是,这种嵌套表示形式可能并不理想。
要展平输出并仅显示值,请创建一个嵌入 sql.NullString 并实现 json.Marshaler 接口的自定义类型。
type MyNullString struct { sql.NullString } func (s MyNullString) MarshalJSON() ([]byte, error) { if s.Valid { return json.Marshal(s.String) } return []byte(`null`), nil } type Company struct { ID int `json:"id"` Abn MyNullString `json:"abn,string"` }
此自定义类型提供了一个 MarshalJSON 方法来检查 NullString 值是否有效。如果是,它将封送字符串值。否则,它封送 null。
通过使用此自定义类型并将其应用于 Company 结构中的 Abn 字段,JSON 输出将被展平,仅显示 Abn 值并省略嵌套对象。
以上是如何在 Go JSON 编组中展平 sql.NullString 输出?的详细内容。更多信息请关注PHP中文网其他相关文章!