|
|
- package proto3
-
- import (
- "bytes"
- "encoding/json"
-
- "github.com/gogo/protobuf/jsonpb"
- )
-
- //---------------------------------------------------------------------------
- // override JSON marshalling so we emit defaults (ie. disable omitempty)
-
- var (
- jsonpbMarshaller = jsonpb.Marshaler{
- EnumsAsInts: true,
- EmitDefaults: true,
- }
- jsonpbUnmarshaller = jsonpb.Unmarshaler{}
- )
-
- func (r *PartSetHeader) MarshalJSON() ([]byte, error) {
- s, err := jsonpbMarshaller.MarshalToString(r)
- return []byte(s), err
- }
-
- func (r *PartSetHeader) UnmarshalJSON(b []byte) error {
- reader := bytes.NewBuffer(b)
- return jsonpbUnmarshaller.Unmarshal(reader, r)
- }
-
- func (r *Header) MarshalJSON() ([]byte, error) {
- s, err := jsonpbMarshaller.MarshalToString(r)
- return []byte(s), err
- }
-
- func (r *Header) UnmarshalJSON(b []byte) error {
- reader := bytes.NewBuffer(b)
- return jsonpbUnmarshaller.Unmarshal(reader, r)
- }
-
- func (r *Version) MarshalJSON() ([]byte, error) {
- s, err := jsonpbMarshaller.MarshalToString(r)
- return []byte(s), err
- }
-
- func (r *Version) UnmarshalJSON(b []byte) error {
- reader := bytes.NewBuffer(b)
- return jsonpbUnmarshaller.Unmarshal(reader, r)
- }
-
- func (r *Timestamp) MarshalJSON() ([]byte, error) {
- s, err := jsonpbMarshaller.MarshalToString(r)
- return []byte(s), err
- }
-
- func (r *Timestamp) UnmarshalJSON(b []byte) error {
- reader := bytes.NewBuffer(b)
- return jsonpbUnmarshaller.Unmarshal(reader, r)
- }
-
- // Some compile time assertions to ensure we don't
- // have accidental runtime surprises later on.
- // jsonEncodingRoundTripper ensures that asserted
- // interfaces implement both MarshalJSON and UnmarshalJSON
-
- type jsonRoundTripper interface {
- json.Marshaler
- json.Unmarshaler
- }
-
- var _ jsonRoundTripper = (*PartSetHeader)(nil)
- var _ jsonRoundTripper = (*Header)(nil)
- var _ jsonRoundTripper = (*Version)(nil)
- var _ jsonRoundTripper = (*Timestamp)(nil)
|