Documentation ¶
Index ¶
- Constants
- Variables
- func IsWellKnownType(typ reflect2.Type) bool
- func JSONCamelCase(s string) string
- func JSONSnakeCase(s string) string
- func QuoteValidUTF8String(s string) ([]byte, error)
- func QuoteValidUTF8StringWithHTMLEscaped(s string) ([]byte, error)
- func WrapElemDecoder(typ reflect2.Type, dec jsoniter.ValDecoder, ifNil func(ptr unsafe.Pointer)) jsoniter.ValDecoder
- func WrapElemEncoder(typ reflect2.Type, enc jsoniter.ValEncoder, ...) jsoniter.ValEncoder
- type OptionalDecoder
- type OptionalEncoder
- type ProtoCodec
- type ProtoExtension
- func (e *ProtoExtension) CreateDecoder(typ reflect2.Type) jsoniter.ValDecoder
- func (e *ProtoExtension) CreateEncoder(typ reflect2.Type) jsoniter.ValEncoder
- func (e *ProtoExtension) DecorateDecoder(typ reflect2.Type, decoder jsoniter.ValDecoder) jsoniter.ValDecoder
- func (e *ProtoExtension) DecorateEncoder(typ reflect2.Type, encoder jsoniter.ValEncoder) jsoniter.ValEncoder
- func (e *ProtoExtension) GetResolver() interface{ ... }
- func (e *ProtoExtension) UpdateArrayEncoderConstructor(v *jsoniter.ArrayEncoderConstructor)
- func (e *ProtoExtension) UpdateMapEncoderConstructor(v *jsoniter.MapEncoderConstructor)
- func (e *ProtoExtension) UpdateSliceEncoderConstructor(v *jsoniter.SliceEncoderConstructor)
- func (e *ProtoExtension) UpdateStructDescriptor(desc *jsoniter.StructDescriptor)
- func (e *ProtoExtension) UpdateStructDescriptorConstructor(c *jsoniter.StructDescriptorConstructor)
Constants ¶
View Source
const ( Value_message_fullname protoreflect.FullName = "google.protobuf.Value" Value_NumberValue_field_fullname protoreflect.FullName = "google.protobuf.Value.number_value" )
View Source
const (
Duration_message_fullname protoreflect.FullName = "google.protobuf.Duration"
)
View Source
const (
FieldMask_Paths_field_fullname protoreflect.FullName = "google.protobuf.FieldMask.paths"
)
View Source
const (
NullValue_enum_fullname = "google.protobuf.NullValue"
)
View Source
const (
Timestamp_message_fullname protoreflect.FullName = "google.protobuf.Timestamp"
)
Variables ¶
View Source
var (
Any_message_fullname protoreflect.FullName = "google.protobuf.Any"
)
View Source
var ProtoCodecs = map[reflect2.Type]*ProtoCodec{}
View Source
var WellKnownTypes = map[reflect2.Type]bool{ reflect2.TypeOfPtr((*anypb.Any)(nil)).Elem(): true, reflect2.TypeOfPtr((*timestamppb.Timestamp)(nil)).Elem(): true, reflect2.TypeOfPtr((*durationpb.Duration)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.BoolValue)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.Int32Value)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.Int64Value)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.UInt32Value)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.UInt64Value)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.FloatValue)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.DoubleValue)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.StringValue)(nil)).Elem(): true, reflect2.TypeOfPtr((*wrapperspb.BytesValue)(nil)).Elem(): true, reflect2.TypeOfPtr((*structpb.Struct)(nil)).Elem(): true, reflect2.TypeOfPtr((*structpb.ListValue)(nil)).Elem(): true, reflect2.TypeOfPtr((*structpb.Value)(nil)).Elem(): true, reflect2.TypeOfPtr((*fieldmaskpb.FieldMask)(nil)).Elem(): true, reflect2.TypeOfPtr((*emptypb.Empty)(nil)).Elem(): true, }
https://github.com/protocolbuffers/protobuf-go/blob/master/encoding/protojson/well_known_types.go
View Source
var WktProtoCodecs = map[reflect2.Type]*ProtoCodec{ reflect2.TypeOfPtr((*anypb.Any)(nil)).Elem(): wktAnyCodec, reflect2.TypeOfPtr((*timestamppb.Timestamp)(nil)).Elem(): wktTimestampCodec, reflect2.TypeOfPtr((*durationpb.Duration)(nil)).Elem(): wktDurationCodec, reflect2.TypeOfPtr((*wrapperspb.BoolValue)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.BoolValue)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.BoolValue)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.Int32Value)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.Int32Value)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.Int32Value)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.Int64Value)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.Int64Value)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.Int64Value)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.UInt32Value)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.UInt32Value)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.UInt32Value)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.UInt64Value)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.UInt64Value)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.UInt64Value)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.FloatValue)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.FloatValue)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.FloatValue)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.DoubleValue)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.DoubleValue)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.DoubleValue)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.StringValue)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.StringValue)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.StringValue)(ptr).Value)) }), reflect2.TypeOfPtr((*wrapperspb.BytesValue)(nil)).Elem(): (&ProtoCodec{}). SetElemEncodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream) { stream.WriteVal(((*wrapperspb.BytesValue)(ptr)).GetValue()) }). SetElemDecodeFunc(func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator) { iter.ReadVal(&((*wrapperspb.BytesValue)(ptr).Value)) }), reflect2.TypeOfPtr((*structpb.Struct)(nil)).Elem(): wktStructCodec, reflect2.TypeOfPtr((*structpb.Struct)(nil)): wktStructCodec, reflect2.TypeOfPtr((*structpb.ListValue)(nil)).Elem(): wktListValueCodec, reflect2.TypeOfPtr((*structpb.ListValue)(nil)): wktListValueCodec, reflect2.TypeOfPtr((*structpb.Value)(nil)).Elem(): wktValueCodec, reflect2.TypeOfPtr((*structpb.Value)(nil)): wktValueCodec, reflect2.TypeOfPtr((*fieldmaskpb.FieldMask)(nil)).Elem(): wktFieldmaskCodec, }
Functions ¶
func IsWellKnownType ¶
func JSONCamelCase ¶
JSONCamelCase converts a snake_case identifier to a camelCase identifier, according to the protobuf JSON specification.
func JSONSnakeCase ¶
JSONSnakeCase converts a camelCase identifier to a snake_case identifier, according to the protobuf JSON specification.
func QuoteValidUTF8String ¶
func WrapElemDecoder ¶
func WrapElemDecoder(typ reflect2.Type, dec jsoniter.ValDecoder, ifNil func(ptr unsafe.Pointer)) jsoniter.ValDecoder
func WrapElemEncoder ¶
func WrapElemEncoder(typ reflect2.Type, enc jsoniter.ValEncoder, ifNil func(stream *jsoniter.Stream)) jsoniter.ValEncoder
Types ¶
type OptionalDecoder ¶
type OptionalEncoder ¶
type OptionalEncoder struct { ValueEncoder jsoniter.ValEncoder IfNil func(stream *jsoniter.Stream) }
type ProtoCodec ¶
type ProtoCodec struct { EncoderCreator func(e *ProtoExtension, typ reflect2.Type) jsoniter.ValEncoder DecoderCreator func(e *ProtoExtension, typ reflect2.Type) jsoniter.ValDecoder }
func (*ProtoCodec) SetElemDecodeFunc ¶
func (codec *ProtoCodec) SetElemDecodeFunc(decodeFunc func(e *ProtoExtension, ptr unsafe.Pointer, iter *jsoniter.Iterator)) *ProtoCodec
func (*ProtoCodec) SetElemEncodeFunc ¶
func (codec *ProtoCodec) SetElemEncodeFunc(encodeFunc func(e *ProtoExtension, ptr unsafe.Pointer, stream *jsoniter.Stream)) *ProtoCodec
type ProtoExtension ¶
type ProtoExtension struct { jsoniter.DummyExtension EmitUnpopulated bool UseEnumNumbers bool UseProtoNames bool Resolver interface { protoregistry.MessageTypeResolver // TIPS: does not support it now protoregistry.ExtensionTypeResolver } Encode64BitAsInteger bool SortMapKeysAsString bool PermitInvalidUTF8 bool DisableFuzzyDecode bool }
func (*ProtoExtension) CreateDecoder ¶
func (e *ProtoExtension) CreateDecoder(typ reflect2.Type) jsoniter.ValDecoder
func (*ProtoExtension) CreateEncoder ¶
func (e *ProtoExtension) CreateEncoder(typ reflect2.Type) jsoniter.ValEncoder
func (*ProtoExtension) DecorateDecoder ¶
func (e *ProtoExtension) DecorateDecoder(typ reflect2.Type, decoder jsoniter.ValDecoder) jsoniter.ValDecoder
func (*ProtoExtension) DecorateEncoder ¶
func (e *ProtoExtension) DecorateEncoder(typ reflect2.Type, encoder jsoniter.ValEncoder) jsoniter.ValEncoder
func (*ProtoExtension) GetResolver ¶
func (e *ProtoExtension) GetResolver() interface { protoregistry.MessageTypeResolver protoregistry.ExtensionTypeResolver }
func (*ProtoExtension) UpdateArrayEncoderConstructor ¶
func (e *ProtoExtension) UpdateArrayEncoderConstructor(v *jsoniter.ArrayEncoderConstructor)
func (*ProtoExtension) UpdateMapEncoderConstructor ¶
func (e *ProtoExtension) UpdateMapEncoderConstructor(v *jsoniter.MapEncoderConstructor)
func (*ProtoExtension) UpdateSliceEncoderConstructor ¶
func (e *ProtoExtension) UpdateSliceEncoderConstructor(v *jsoniter.SliceEncoderConstructor)
func (*ProtoExtension) UpdateStructDescriptor ¶
func (e *ProtoExtension) UpdateStructDescriptor(desc *jsoniter.StructDescriptor)
Handle EmitUnpopulated and UseProtoNames
func (*ProtoExtension) UpdateStructDescriptorConstructor ¶
func (e *ProtoExtension) UpdateStructDescriptorConstructor(c *jsoniter.StructDescriptorConstructor)
Source Files ¶
Click to show internal directories.
Click to hide internal directories.