Maison > développement back-end > Golang > Pourquoi « json.Marshal » de Go ne fonctionne-t-il pas avec des structures contenant des noms de champs en minuscules ?

Pourquoi « json.Marshal » de Go ne fonctionne-t-il pas avec des structures contenant des noms de champs en minuscules ?

Mary-Kate Olsen
Libérer: 2024-12-21 07:36:11
original
983 Les gens l'ont consulté

Why Doesn't Go's `json.Marshal` Work with Structs Containing Lowercase Field Names?

Pourquoi Go ne parvient-il pas à générer du JSON pour les structures avec des noms de champs en minuscules ?

Pour commencer, Go utilise les conventions de casse pour différencier les identifiants privés et publics au sein d'un package. Dans l'exemple fourni, les champs (m_ip, m_type et m_serial) de la structure Machine sont privés. Par conséquent, ils ne sont pas accessibles aux bibliothèques externes comme json.Marshal en dehors du package dans lequel ils sont définis.

Lors de la modification des noms de champs en majuscules (MachIp, MachType et MachSerial) dans le deuxième extrait de code, ils deviennent publics et peuvent être exportés. Cela permet à json.Marshal de générer avec succès une représentation JSON.

Cependant, si vous préférez utiliser des noms de champs en minuscules, vous pouvez spécifier manuellement les noms de champs JSON souhaités en utilisant des balises de champ. Par exemple :

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

En annotant les champs avec la balise json, vous demandez essentiellement à l'encodeur JSON d'utiliser les noms de champs spécifiés lors de la génération de la sortie JSON.

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