Maison >développement back-end >Golang >Comment puis-je personnaliser les noms de champs JSON pour les extensions Protobuf ?

Comment puis-je personnaliser les noms de champs JSON pour les extensions Protobuf ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 06:25:10387parcourir

How Can I Customize JSON Field Names for Protobuf Extensions?

Personnalisation des noms de champs JSON pour les extensions Protobuf

Les extensions Protobuf, lorsqu'elles sont sérialisées en JSON, utilisent par défaut des noms de champs qui incluent des crochets et un préfixe indiquant le message parent de l'extension. Cela peut être gênant lorsque vous préférez un nom de champ JSON plus concis ou sémantiquement significatif.

Contexte

Le package jsonpb de Protobuf génère du JSON à partir des messages protobuf. Les noms de champs JSON sont principalement dérivés des noms de champs de message. Cependant, pour les extensions, un format spécial est utilisé : "[message.extension_message_name]". Ceci est conçu pour éviter les conflits de noms de champs lorsque plusieurs extensions sont appliquées à un message.

Solution : utilisez l'option de champ json_name

Le guide linguistique Protobuf fournit une solution de contournement pour personnalisation des noms de champs JSON pour les extensions : l'option de champ json_name. En annotant le champ d'extension avec cette option, vous pouvez spécifier le nom du champ JSON souhaité.

Par exemple :

message TestMessage {
    extensions 1 to 10;
    extend TestMessage {
        optional string my_extension_field = 1 [json_name="my_custom_field_name"];
    }
}

Dans cet exemple, le champ d'extension my_extension_field sera sérialisé en JSON comme my_custom_field_name.

Avantages de l'utilisation json_name

  • Contrôle des noms de champs JSON : Évite la convention de dénomination verbeuse utilisée pour les extensions.
  • Cohérence avec les autres noms de champs JSON : Aligne les noms des champs d'extension avec les conventions de dénomination utilisées pour les messages normaux champs.
  • Lisibilité et maintenabilité améliorées : Rend la sortie JSON plus lisible par l'homme et plus facile à utiliser.

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