Maison > développement back-end > Golang > Pourquoi « json.Marshal » de Go n'inclut-il pas les champs de structure avec des noms en minuscules ?

Pourquoi « json.Marshal » de Go n'inclut-il pas les champs de structure avec des noms en minuscules ?

Linda Hamilton
Libérer: 2024-12-25 01:21:11
original
351 Les gens l'ont consulté

Why Doesn't Go's `json.Marshal` Include Struct Fields with Lowercase Names?

Pourquoi Golang ne parvient-il pas à générer du JSON à partir d'une structure avec un caractère initial minuscule ?

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
}
Copier après la connexion

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
}
Copier après la connexion

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"`
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal