„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich JSON WebSocket -Nachrichten als Gewerkschaftstypen in Go deserialisieren?

Wie kann ich JSON WebSocket -Nachrichten als Gewerkschaftstypen in Go deserialisieren?

Gepostet am 2025-03-12
Durchsuche:396

How to Deserialize JSON Websocket Messages as Union Types in Go?

Deserialisierung von JSON WebSocket -Nachrichten als Gewerkschaftstypen in Go

In Go wird die Gorilla WebSocket -Bibliothek üblicherweise zur Bearbeitung von Websocket -Verbindungen verwendet. Wenn Sie jedoch JSON für Serialisierung und Deserialisierung verwenden, stellt die Behandlung eingehender Nachrichten von unterschiedlichen Typen eine Herausforderung dar.

Betrachten Sie das folgende Beispiel, in dem Sie Strukturen für Nachrichtentypen "Foo" und "bar":

type Foo struct {
    A string `json:"a"`
    B string `json:"b"`
}

type Bar struct {
    C string `json:"c"`
    D string `json:"d"`
}

Gorillas Conn.Readjson -Funktion ermöglicht es Ihnen, eingehende JSON -Nachrichten in bestimmte Strukturen zu deserialisieren. Sie müssten jedoch separate Conn.Readjson (Foo) und Conn.Readjson (Bar) -Anrufe verwenden, um Nachrichten von verschiedenen Typen zu verarbeiten, die ineffizient und umständlich sind. Steuerzeichenfolge `JSON:" Control "` X JSON.RAWMESSAGE }

Das Kontrollfeld gibt den Typ des Nutzloads an, und X hält die RAW -JSON -Daten. Um eingehende Nachrichten mit diesem Ansatz zu deverialisieren:

type Messages struct {
    Control string `json:"control"`
    X json.RawMessage
}

Diese Lösung ermöglicht es Ihnen, eingehende Nachrichten unabhängig von ihrem Typ mit dem RawMessage -Schnittstellentyp in json.rawmessage zu deferialisieren. Die Switch -Anweisung überprüft das Kontrollfeld, um den tatsächlichen Nachrichtentyp zu bestimmen und entsprechend zu deserialisieren.

.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3