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)