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
Mary-Kate Olsenoriginal
2024-12-26 00:28:101033parcourir

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
}

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
}

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"`
}

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!

Déclaration:
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