这个包产生的输出与标准的”encoding/json”包不同,后者不能在协议缓冲区消息上正确操作
文档:https://pkg.go.dev/google.golang.org/protobuf@v1.27.1/encoding/protojson
Functions
func Format(m proto.Message) string
func 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
// 使用数字替代Enum
UseEnumNumbers 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.ExtensionTypeResolver
protoregistry.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.MessageTypeResolver
protoregistry.ExtensionTypeResolver
}
}
func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error