Maison  >  Article  >  développement back-end  >  Comment décoder un JSON avec des champs non primitifs en Protobuf in Go ?

Comment décoder un JSON avec des champs non primitifs en Protobuf in Go ?

DDD
DDDoriginal
2024-10-28 22:50:30764parcourir

How to Decode a JSON with Non-Primitive Fields into Protobuf in Go?

Décodage de JSON en Protobuf avec des champs non primitifs

Le problème se pose lorsque vous essayez de désorganiser un JSON contenant un champ non primitif, comme Données dans ce cas, dans un Protobuf en utilisant la bibliothèque "encoding/json". Le comportement par défaut de la bibliothèque n'est pas capable de gérer correctement ces champs, ce qui les rend nuls.

Utilisation de Protobuf Encoding/Protojson

Pour gérer correctement les non -champs primitifs, vous devez utiliser la bibliothèque google.golang.org/protobuf/encoding/protojson. Cette bibliothèque fournit des fonctions de décodage spécialisées pour les messages Protobuf.

Le code corrigé pour décoder le JSON dans le Protobuf serait :

req := &proto.JobCreateRequest{}
err := protojson.Unmarshal(bytes, req)

Cette approche garantit que le champ Données est désérialisé et initialisé correctement . Il parcourt récursivement la structure JSON et tente d'attribuer des valeurs à tous les champs définis dans le message Protobuf.

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