¿Por qué Golang no puede generar json a partir de una estructura con carácter en minúsculas frontal?
Estoy tratando de imprimir el resultado json de la estructura que creé de la siguiente manera:
type Machine struct {
m_ip string
m_type string
m_serial string
}
E imprimir
m:= &Machine{ m_ip:"test", m_type:"test", m_serial:"test" }
m_json:= json.Marshal(m)
fmt.Println(m_json)
Sin embargo, el resultado devuelto solo {}
En segundo lugar, traté de cambiar la primera letra de las palabras a Mayúsculas como sigue:
type Machine struct{
MachIp string
MachType string
MachSerial string
}
Y funciona! ¿Por qué la palabra con carácter minúsculo en la parte delantera no funciona, de todos modos?
1 answers
Go usa case para determinar si un identificador en particular es público o privado dentro del contexto de su paquete. En su primer ejemplo, los campos no son visibles para json.Marshal
porque no es parte del paquete que contiene su código. Cuando cambiaste los campos para que fueran mayúsculas, se hicieron públicos para que pudieran exportarse.
Si necesita usar identificadores en minúsculas en su salida JSON, puede etiquetar los campos con los identificadores deseados. Por ejemplo:
type Machine struct{
MachIp string `json:"m_ip"`
MachType string `json:"m_type"`
MachSerial string `json:"m_serial"`
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-17 09:40:00