| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | package jsonpb////import (//	"bytes"//	"encoding/json"//	"reflect"////	"github.com/gogo/protobuf/proto"////	"github.com/golang/protobuf/jsonpb"////	"github.com/go-kratos/kratos/v2/encoding"//)////// Name is the name registered for the json codec.//const Name = "json"////var jsonpbMarshaler *jsonpb.Marshaler////func init() {//	jsonpbMarshaler = &jsonpb.Marshaler{//		EnumsAsInts:  true,//		EmitDefaults: true,//		OrigName:     true,//	}//	encoding.RegisterCodec(codec{})//}////// codec is a Codec implementation with json.//type codec struct{}////func (codec) Marshal(v interface{}) ([]byte, error) {//	if _, ok := v.(proto.Message); ok {//		var buf bytes.Buffer//		err := jsonpbMarshaler.Marshal(&buf, v.(proto.Message))//		if err != nil {//			return nil, err//		}//		return buf.Bytes(), nil//	}//	return json.Marshal(v)//}////func (codec) Unmarshal(data []byte, v interface{}) error {//	rv := reflect.ValueOf(v)//	for rv.Kind() == reflect.Ptr {//		if rv.IsNil() && rv.CanInterface() {//			rv.Set(reflect.New(rv.Type().Elem()))//			v = rv.Interface()//		}//		rv = rv.Elem()//	}//	return json.Unmarshal(data, v)//}////func (codec) Name() string {//	return Name//}
 |