"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como desserializar mensagens do JSON WebSocket como tipos de sindicatos em Go?

Como desserializar mensagens do JSON WebSocket como tipos de sindicatos em Go?

Postado em 2025-03-12
Navegar:650

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

Deserializando mensagens json websocket como tipos de sindicatos em go

em Go, a biblioteca de websocket gorilla é comumente usada para lidar com o WebSocket Connections. No entanto, ao usar o JSON para serialização e desserialização, o manuseio de mensagens recebidas de tipos variados apresenta um desafio. Uma string `json:" a "` B String `JSON:" B "` } Tipo de barra de barra { C String `JSON:" C "` D String `JSON:" D "` }

A função Conn.readjson de Gorilla permite que você desserialize mensagens JSON recebidas em estruturas específicas. No entanto, você precisaria usar as chamadas Conn.readjson (Foo) e Conn.readjson (bar) para lidar com mensagens de diferentes tipos, que são ineficientes e pesados. String de controle `JSON:" Control "` X json.rawmessage }

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

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

var M Mensagens err: = c.readjson (& m) se err! = nil { // manipula o erro } Switch M.Control { caso "foo": var foo foo se err: = json.unmarshal ([] byte (m.x) e foo); err! = nil { // manipula o erro } // Faça algo com foo case "bar": // Siga o mesmo padrão para manuseio }

Esta solução permite que você desserialize mensagens recebidas, independentemente do tipo, usando o tipo de interface RawMessage em json.rawmessage. A instrução Switch verifica o campo de controle para determinar o tipo de mensagem real e desaperializar de acordo.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3