Heim >Backend-Entwicklung >Golang >Ist „google/protobuf/struct.proto' die beste Möglichkeit, dynamische JSON-Daten über gRPC zu senden?
Ist „google/protobuf/struct.proto“ die optimale Methode zur Übertragung von dynamischem JSON über GRPC?
Verwendung von google/protobuf/struct .proto kann eine effektive Methode zur Übertragung dynamischer JSON-Objekte sein GRPC.
Verwendung von google/protobuf/struct
Google/protobuf/struct.proto bietet eine allgemeine Datenstruktur zur Darstellung von JSON-Objekten in Protobuf-Nachrichten. Es umfasst zwei wichtige Nachrichtentypen:
Dynamisch JSON
Dynamisches JSON bezieht sich auf unstrukturierte oder flexible Daten, die als String gespeichert sind. Wenn Ihre Daten einem vordefinierten Schema folgen, kann die Definition eines benutzerdefinierten Protobuf-Nachrichtentyps effizienter sein.
Protodatei
Ihre Protodatei (User.proto) verwendet google/ protobuf/struct.proto, um eine SendJsonRequest-Nachricht zu deklarieren. Das Feld „Details“ ist vom Typ „Struct“, sodass dynamische JSON-Daten übergeben werden können.
Client-Code
Ihr Client-Code erstellt eine Instanz von structpb.Struct mit structpb .NewStruct(), das ein Map[string]interface{} in ein Struct-Objekt konvertiert.
Alternative Lösungen
Anujs Lösung
Diese Lösung ist komplexer und erfordert die manuelle Konvertierung jedes Karteneintrags in einen structpb.Value, was mehr Code als nötig erfordert.
Lukes Lösung
Obwohl dies prägnanter ist Die Lösung umfasst immer noch die Konvertierung von Map in Bytes und dann in structpb.Struct.
Lösung aus einem anderen Ansatz
Die vorgeschlagene Lösung verwendet structpb.NewStruct() direkt zum Erstellen ein Strukturobjekt aus einer Karte, sodass kein Zwischenprodukt erforderlich ist Konvertierung.
Fazit
Die Verwendung von google/protobuf/struct.proto kann eine geeignete Option für die Übertragung von dynamischem JSON über GRPC sein, wenn mit unstrukturierten oder flexiblen Daten gearbeitet wird. Wenn Ihre Daten jedoch einem bestimmten Schema folgen, kann die Definition einer benutzerdefinierten Protobuf-Nachricht eine höhere Effizienz und Typsicherheit bieten.
Das obige ist der detaillierte Inhalt vonIst „google/protobuf/struct.proto' die beste Möglichkeit, dynamische JSON-Daten über gRPC zu senden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!