2014-04-14 27 views
6

Tôi có một chương trình đi bằng cách sử dụng thư viện chuẩn (tương đối) go.net/websocket‎. Tôi đang cố gắng để tiếp nhận và giải mã thông điệp từ một trang web mà có một cấu trúc khác nhau đối với từng loại tin nhắn, tức làLàm cách nào để bạn có thể giải mã nhiều loại thông báo bằng websockets golang?

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

Có cách nào để làm một "phần" giải mã thông điệp, chỉ đánh dấu type trường trước khi tiếp tục giải mã thông điệp thực tế thành cấu trúc go?

Điều này có cần phải viết một tùy chỉnh Codec, a'la JSON, ủy quyền cho codec JSON cho chính thư đó không?

Trả lời

11

Sử dụng json.RawMessage để trì hoãn việc giải mã, ví dụ:

struct { 
    type string 
    msg json.RawMessage 
} 

json.RawMessage là một bí danh cho []byte mà bạn có thể sau đó tiếp tục giải mã như bạn muốn.

Các vấn đề liên quan