diff --git a/jsonrpc2.go b/jsonrpc2.go index 54e012f..518f5c0 100644 --- a/jsonrpc2.go +++ b/jsonrpc2.go @@ -583,6 +583,8 @@ func (c *Conn) readMessages(ctx context.Context) { close(c.disconnect) } +var MessageSerializer func([]byte) ([]byte, error) + // call represents a JSON-RPC call over its entire lifecycle. type call struct { request *Request @@ -636,6 +638,15 @@ func (m *anyMessage) UnmarshalJSON(data []byte) error { return nil } + if MessageSerializer != nil { + var err error + + data, err = MessageSerializer(data) + if err != nil { + return err + } + } + if isArray := len(data) > 0 && data[0] == '['; isArray { var msgs []msg if err := json.Unmarshal(data, &msgs); err != nil {