go - 将 null 分配给 JSON 字段而不是空字符串

标签 go

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

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

如果该特定字段的值不可用,则我发送数据的应用程序需要 null 而不是空字符串。

这是正确的方法还是有人可以指出比这更好的方法。

最佳答案

json package documentation :

Pointer values encode as the value pointed to. A nil pointer encodes as the null JSON object.

所以你可以存储一个指向字符串的指针,如果不是 nil,它将被编码为字符串,如果为 nil,则将被编码为“null”

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

关于go - 将 null 分配给 JSON 字段而不是空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048557/

相关文章:

session - 在 golang 中将 map、struct 设置为 session (gin gonic 框架)

json - JSON 模板中的转义值

mysql - 在 Go 中使用查询参数获取记录

unit-testing - 循环中带有致命流程的单元测试代码

go - 包含结构方法的变量

go - 初始化不变的 byte slice 的最佳方法

go2go.playground - 预期类型,发现 'type'(还有 1 个错误)

go - 从 vector.Vector 中删除元素

serialization - 戈朗 : print struct as it would appear in source code

select - golang : goroute with select doesn't stop unless I added a fmt. 打印()