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
Mary-Kate Olsenoriginal
2024-12-21 07:36:11939parcourir

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

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!

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