这个包产生的输出与标准的”encoding/json”包不同,后者不能在协议缓冲区消息上正确操作
文档:https://pkg.go.dev/google.golang.org/protobuf@v1.27.1/encoding/protojson
Functions
func Format(m proto.Message) stringfunc Marshal(m proto.Message) ([]byte, error)func Unmarshal(b []byte, m proto.Message) error
type MarshalOptions
type MarshalOptions struct {pragma.NoUnkeyedLiterals// Multiline指定封送程序是否应该将输出格式化为缩进格式,使每个文本元素在新行上。// 如果Indent是空字符串,则选择任意的缩进。Multiline bool// Indent指定缩进字符集,以便每个条目前面都有Indent,并以换行符结束。// 如果非空,则Multiline被视为true。缩进只能由空格或制表符组成。Indent string// AllowPartial允许对缺少必需字段的消息进行封送而不返回错误。// 如果AllowPartial为false(默认值),如果缺少任何必需字段,Marshal将返回错误。AllowPartial bool// 在JSON中使用proto字段名而不是lowerCamelCase名称UseProtoNames bool// 使用数字替代EnumUseEnumNumbers bool// EmitUnpopulated指定是否发出未填充的字段。它不会发出未填充的字段或未填充的扩展字段。// 未填充字段发出的JSON值如下:// ╔═══════╤════════════════════════════╗// ║ JSON │ Protobuf field ║// ╠═══════╪════════════════════════════╣// ║ false │ proto3 boolean fields ║// ║ 0 │ proto3 numeric fields ║// ║ "" │ proto3 string/bytes fields ║// ║ null │ proto2 scalar fields ║// ║ null │ message fields ║// ║ [] │ list fields ║// ║ {} │ map fields ║// ╚═══════╧════════════════════════════╝EmitUnpopulated bool// Resolver is used for looking up types when expanding google.protobuf.Any// messages. If nil, this defaults to using protoregistry.GlobalTypes.Resolver interface {protoregistry.ExtensionTypeResolverprotoregistry.MessageTypeResolver}}
func (o MarshalOptions) Format(m proto.Message) string
func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error)
type UnmarshalOptions
type UnmarshalOptions struct {pragma.NoUnkeyedLiterals// 如果设置了AllowPartial,那么将导致丢失必需字段的消息将不会返回错误。AllowPartial bool// If DiscardUnknown is set, unknown fields are ignored.DiscardUnknown bool// Resolver is used for looking up types when unmarshaling// google.protobuf.Any messages or extension fields.// If nil, this defaults to using protoregistry.GlobalTypes.Resolver interface {protoregistry.MessageTypeResolverprotoregistry.ExtensionTypeResolver}}
func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error
