Go 中的 JSON 编组:结构体字段的大小写敏感
尝试从 Go 中的结构体生成 JSON 时,可能会遇到意外结果如果结构体的字段以小写字符开头。考虑以下结构:
type Machine struct { m_ip string m_type string m_serial string }
将此结构编组为 JSON 将生成一个空 JSON 对象 {}。这是因为,按照惯例,Go 使用标识符的大小写来确定其在包中的可见性。通过以小写字符开头字段名称,它们被标记为私有且无法被 json.Marshal 函数访问。
要解决此问题,可以通过将每个单词的第一个字母大写来将字段名称公开:
type Machine struct { MachIp string MachType string MachSerial string }
或者,如果希望在 JSON 输出中使用小写字段名称,可以使用标签来指定所需的 JSON名称:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
通过使用标签,可以自定义 JSON 字段名称,同时保持 Go 中结构体字段的隐私性。
以上是为什么我的 Go 结构在编组时会生成空 JSON 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!