Heim > Backend-Entwicklung > Golang > Wie dekodiere ich ein JSON mit nicht-primitiven Feldern in Protobuf in Go?

Wie dekodiere ich ein JSON mit nicht-primitiven Feldern in Protobuf in Go?

DDD
Freigeben: 2024-10-28 22:50:30
Original
855 Leute haben es durchsucht

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

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage