2014-04-14 10 views
6

Mam program go używać przy użyciu (stosunkowo) standardowej biblioteki go.net/websocket‎. Staram się odbierać i dekodować wiadomości ze strony internetowej, które mają inną strukturę dla każdego typu wiadomości, tjW jaki sposób można dekodować wiele typów wiadomości za pomocą golang websockets?

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

Czy istnieje jakiś sposób, aby zrobić „częściową” dekodowania wiadomości, tylko sprawdzenie type pole przed przystąpieniem do dekodowania rzeczywistej wiadomości do struktury go?

Czy to wymagałoby napisania niestandardowego Codec, a'la JSON, który deleguje do kodeka JSON dla samej wiadomości?

Odpowiedz

11

użytkowania json.RawMessage opóźnić dekodowanie, np

struct { 
    type string 
    msg json.RawMessage 
} 

json.RawMessage jest aliasem dla []byte które można następnie dalej dekodować jak chcesz.

Powiązane problemy