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
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!