Maison > développement back-end > Golang > Pourquoi My Go Struct produit-il un objet JSON vide lors du marshalling ?

Pourquoi My Go Struct produit-il un objet JSON vide lors du marshalling ?

Mary-Kate Olsen
Libérer: 2024-12-26 00:28:10
original
1022 Les gens l'ont consulté

Why Does My Go Struct Produce an Empty JSON Object When Marshalling?

JSON Marshalling dans Go : sensibilité à la casse des champs de structure

Lorsque vous essayez de générer du JSON à partir d'une structure dans Go, vous pouvez rencontrer des résultats inattendus si les champs de la structure commencent par des caractères minuscules. Considérez la structure suivante :

type Machine struct {
  m_ip string
  m_type string
  m_serial string
}
Copier après la connexion

Le regroupement de cette structure en JSON entraînera un objet JSON vide {}. En effet, par convention, Go utilise la casse d'un identifiant pour déterminer sa visibilité au sein d'un package. En commençant les noms de champs par des caractères minuscules, ils sont marqués comme privés et inaccessibles à la fonction json.Marshal.

Pour résoudre ce problème, on peut soit rendre les noms de champs publics en mettant en majuscule la première lettre de chaque mot :

type Machine struct {
  MachIp string
  MachType string
  MachSerial string
}
Copier après la connexion

Ou, si l'on souhaite utiliser des noms de champs en minuscules dans la sortie JSON, ils peuvent utiliser des balises pour spécifier le JSON souhaité noms :

type Machine struct {
  MachIp     string `json:"m_ip"`
  MachType   string `json:"m_type"`
  MachSerial string `json:"m_serial"`
}
Copier après la connexion

En utilisant des balises, on peut personnaliser les noms des champs JSON tout en préservant la confidentialité des champs de structure dans Go.

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!

source:php.cn
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