Maison >développement back-end >Golang >Pourquoi « json.Marshal » de Go n'inclut-il pas les champs de structure avec des noms en minuscules ?
Lorsqu'ils tentent de rassembler une structure en JSON, les développeurs peuvent rencontrer un problème inattendu où le le résultat est renvoyé sous la forme d'un objet vide. Ce comportement découle de l'utilisation par Go de la casse pour différencier les identifiants privés et publics.
Dans l'exemple fourni, la structure Machine a des champs avec des caractères initiaux minuscules :
type Machine struct { m_ip string m_type string m_serial string }
Par défaut, Go considère les identifiants avec des caractères initiaux minuscules comme privés. Cela signifie que les champs dans Machine ne sont pas visibles par json.Marshal car ils ne font pas partie du même package que le code.
Pour résoudre ce problème, les développeurs peuvent choisir de changer les noms des champs en majuscules, ce qui rend les publics :
type Machine struct { MachIp string MachType string MachSerial string }
Cependant, si les développeurs souhaitent conserver les identifiants en minuscules dans la sortie JSON, ils peuvent utiliser JSON tags:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
En ajoutant json:"m_ip" au champ MachIp, par exemple, le JSON résultant inclura l'identifiant en minuscule souhaité. Ceci est obtenu car la balise JSON remplace le comportement de casse par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!