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!