From e2b8abd86ae9593d903c9e629234df1b9b6e54d0 Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 8 Jul 2019 10:32:10 +0800 Subject: [PATCH] grpc: using jsonpb.Marshaler to do Marshal, map to jsonpb.Unmarsh --- codec.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/codec.go b/codec.go index f223a55..e7891ee 100644 --- a/codec.go +++ b/codec.go @@ -22,6 +22,8 @@ type protoCodec struct{} type bytesCodec struct{} type wrapCodec struct{ encoding.Codec } +var jsonpbMarshaler = &jsonpb.Marshaler{} + var ( defaultGRPCCodecs = map[string]encoding.Codec{ "application/json": jsonCodec{}, @@ -113,6 +115,12 @@ func (bytesCodec) Name() string { } func (jsonCodec) Marshal(v interface{}) ([]byte, error) { + if pb, ok := v.(proto.Message); ok { + s, err := jsonpbMarshaler.MarshalToString(pb) + + return []byte(s), err + } + return json.Marshal(v) }