Go Websocket: Deserialisierung mehrerer JSON-Nachrichtentypen mithilfe von json.RawMessage
Bei der Arbeit mit Gorilla Websocket werden eingehende JSON-Nachrichten mehrerer Typen verarbeitet kann eine Herausforderung darstellen. Die separate Verwendung der ReadJSON-Methode für jeden Typ kann umständlich sein. In diesem Artikel wird eine Lösung untersucht, die den Typ json.RawMessage verwendet, um die Deserialisierung effizient durchzuführen.
Problem:
Wie können wir eingehende JSON-Nachrichten basierend auf a in verschiedene Strukturen deserialisieren? Steuerfeld im JSON, ohne mehrere ReadJSON zu verwenden Aufrufe?
Lösung:
Definieren Sie eine Wrapper-Struktur für Nachrichten mit einem Steuerfeld zur Angabe des Typs der tatsächlichen Daten und einem X-Feld vom Typ json.RawMessage zum Halten die serialisierten Daten.
type Messages struct { Control string `json:"control"` X json.RawMessage `json:"X"` }
Entpacken Sie die eingehende JSON-Nachricht in die Nachrichten struct.
var m Messages err := c.ReadJSON(&m)
Untersuchen Sie das Steuerfeld, um den tatsächlichen Typ der Daten zu bestimmen. Entpacken Sie das
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich mehrere JSON-Nachrichtentypen effizient in Go Websocket mit json.RawMessage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!