Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de champ de données nul lors de la désorganisation de JSON vers Protobuf Struct ?

Comment résoudre le problème de champ de données nul lors de la désorganisation de JSON vers Protobuf Struct ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 07:30:02456parcourir

How to Resolve Null Data Field Issue When Unmarshaling JSON to Protobuf Struct?

Désagrégation de JSON dans un champ de structure Protobuf : résolution du problème de champ de données nul

Lors d'une tentative de désorganisation de données JSON dans un champ de structure Protobuf de type Google .protobuf.Value, vous pouvez rencontrer une situation où le champ Données dans la structure protobuf est défini sur zéro. Ce problème survient en raison de l'incompatibilité entre le package encoding/json de la bibliothèque standard et les exigences spécifiques des champs Protobuf Value.

Pour résoudre ce problème, une bibliothèque plus adaptée doit être utilisée pour le démarshaling. La bibliothèque protobuf de Google offre une approche plus robuste et personnalisée pour gérer les types de données spécifiques à protobuf. Voici le code corrigé à l'aide de protojson.Unmarshal :

<code class="go">import (
    "google.golang.org/protobuf/encoding/protojson"
    "google.golang.org/protobuf/proto"
    "io"
)

req := &proto.JobCreateRequest{}
bytes, err := io.ReadAll(r.Body)
if err != nil {
    return err
}
err = protojson.Unmarshal(bytes, req)
if err != nil {
    return err
}</code>

En tirant parti de protojson.Unmarshal au lieu du package encoding/json, vous pouvez convertir efficacement les données JSON en structure protobuf, en vous assurant que le champ Données est correctement peuplé. La structure JobCreateRequest résultante contiendra les valeurs attendues pour les champs de nom, de description et de données.

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