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  }