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.
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