gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/codec/json/marshaler.go (about) 1 package json 2 3 import ( 4 "encoding/json" 5 6 "github.com/golang/protobuf/jsonpb" 7 "github.com/golang/protobuf/proto" 8 ) 9 10 type Marshaler struct{} 11 12 func (j Marshaler) Marshal(v interface{}) ([]byte, error) { 13 return json.Marshal(v) 14 } 15 16 func (j Marshaler) Unmarshal(d []byte, v interface{}) error { 17 if pb, ok := v.(proto.Message); ok { 18 return jsonpb.UnmarshalString(string(d), pb) 19 } 20 return json.Unmarshal(d, v) 21 } 22 23 func (j Marshaler) String() string { 24 return "json" 25 }