2014-04-14 7 views
6

Ho un programma go che utilizza la libreria (relativamente) standard go.net/websocket‎. Sto cercando di ricevere e decodificare i messaggi di una pagina web che hanno una struttura diversa per ogni tipo di messaggio, cioèCome è possibile decodificare più tipi di messaggi con golan web socket?

{type: "messagetype", msg: { /* structure different for each message type */ } } 

Esiste un modo per fare una decodifica "parziale" del messaggio, solo il controllo del type prima di procedere alla decodifica del messaggio effettivo in una struttura go?

Ciò richiederebbe la scrittura di una personalizzata Codec, a'la JSON, che delega al codice JSON per il messaggio stesso?

risposta

11

Usa json.RawMessage per ritardare la decodifica, ad esempio

struct { 
    type string 
    msg json.RawMessage 
} 

json.RawMessage è un alias per []byte quale si può poi ulteriormente decodificare come si desidera.

Problemi correlati