为什么Golang无法使用前小写字符从struct生成json?

我正在尝试从以下创建的结构中打印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

}

而且有效!无论如何,为什么前面没有小写字母的单词呢?

回答:

Go用例确定在您的包上下文中特定标识符是公共标识符还是私有标识符。在您的第一个示例中,该字段不可见,json.Marshal因为它不是包含代码的包的一部分。当您将字段更改为大写时,它们变为公共字段,因此可以导出。

但是,如果您需要在JSON输出中使用小写的标识符,则可以使用所需的标识符标记字段。例如:

type Machine struct{

MachIp string `json:"m_ip"`

MachType string `json:"m_type"`

MachSerial string `json:"m_serial"`

}

以上是 为什么Golang无法使用前小写字符从struct生成json? 的全部内容, 来源链接: utcz.com/qa/414311.html

回到顶部