Merge pull request #504 from magodo/json_pb_support
unmarshal json with `jsonpb` if accepter is pb
This commit is contained in:
		| @@ -5,6 +5,8 @@ import ( | |||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"io" | 	"io" | ||||||
|  |  | ||||||
|  | 	"github.com/golang/protobuf/jsonpb" | ||||||
|  | 	"github.com/golang/protobuf/proto" | ||||||
| 	"github.com/micro/go-micro/codec" | 	"github.com/micro/go-micro/codec" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -22,6 +24,9 @@ func (c *Codec) ReadBody(b interface{}) error { | |||||||
| 	if b == nil { | 	if b == nil { | ||||||
| 		return nil | 		return nil | ||||||
| 	} | 	} | ||||||
|  | 	if pb, ok := b.(proto.Message); ok { | ||||||
|  | 		return jsonpb.UnmarshalNext(c.Decoder, pb) | ||||||
|  | 	} | ||||||
| 	return c.Decoder.Decode(b) | 	return c.Decoder.Decode(b) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,6 +2,9 @@ package json | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
|  |  | ||||||
|  | 	"github.com/golang/protobuf/jsonpb" | ||||||
|  | 	"github.com/golang/protobuf/proto" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| type Marshaler struct{} | type Marshaler struct{} | ||||||
| @@ -11,6 +14,9 @@ func (j Marshaler) Marshal(v interface{}) ([]byte, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (j Marshaler) Unmarshal(d []byte, v interface{}) error { | func (j Marshaler) Unmarshal(d []byte, v interface{}) error { | ||||||
|  | 	if pb, ok := v.(proto.Message); ok { | ||||||
|  | 		return jsonpb.UnmarshalString(string(d), pb) | ||||||
|  | 	} | ||||||
| 	return json.Unmarshal(d, v) | 	return json.Unmarshal(d, v) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user