我正在尝试从我创建的struct中打印json结果,如下所示:
type Machine struct {
m_ip string
m_type string
m_serial string
}
并打印
m:= &Machine{ m_ip:"test", m_type:"test", m_serial:"test" }
m_json:= json.Marshal(m)
fmt.Println(m_json)
然而,结果仅返回{}
其次,我试图将单词的第一个字母改为大写,如下所示:
type Machine struct{
MachIp string
MachType string
MachSerial string
}
它有效!为什么前面的小写字母不能用呢?
答案 0 :(得分:66)
Go用例来确定特定标识符在包的上下文中是公共标识符还是私有标识符。在第一个示例中,json.Marshal
无法看到这些字段,因为它不是包含代码的包的一部分。当您将字段更改为大写字母时,它们变为公共字段,因此可以导出。
如果您需要在JSON输出中使用小写标识符,则可以使用所需的标识符标记字段。例如:
type Machine struct{
MachIp string `json:"m_ip"`
MachType string `json:"m_type"`
MachSerial string `json:"m_serial"`
}