JSON in Protobuf mit nicht-primitiven Feldern dekodieren
Das Problem tritt auf, wenn versucht wird, einen JSON-Code zu entmarshalieren, der ein nicht-primitives Feld enthält, z. B Daten in diesem Fall in ein Protobuf mithilfe der Bibliothek „encoding/json“. Das Standardverhalten der Bibliothek ist nicht in der Lage, diese Felder richtig zu verarbeiten, was dazu führt, dass sie auf Null gesetzt werden.
Verwendung von Protobuf Encoding/Protojson
Um nicht korrekt zu verarbeiten -primitive Felder verwenden, sollten Sie die Bibliothek google.golang.org/protobuf/encoding/protojson verwenden. Diese Bibliothek bietet spezielle Dekodierungsfunktionen für Protobuf-Nachrichten.
Der korrigierte Code zum Dekodieren des JSON in Protobuf wäre:
req := &proto.JobCreateRequest{} err := protojson.Unmarshal(bytes, req)
Dieser Ansatz stellt sicher, dass das Datenfeld korrekt deserialisiert und initialisiert wird . Es durchläuft rekursiv die JSON-Struktur und versucht, allen in der Protobuf-Nachricht definierten Feldern Werte zuzuweisen.
Das obige ist der detaillierte Inhalt vonWie dekodiere ich ein JSON mit nicht-primitiven Feldern in Protobuf in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!