PROTOBUF_TO_JSON
功能概述
把 Protobuf 二进制数据直接转换为 JSON 字符串,遵循 Protobuf 官方的 JSON 映射规则。适合把原始 Protobuf 消息转成可读文本做排查,或转存为 JSON 列供后续用 JSON 函数处理。转换不经过 STRUCT 中间结果,大批量转换时比
TO_JSON(FROM_PROTOBUF(...)) 更快。
需要按字段过滤、聚合或展开数组时,用 FROM_PROTOBUF。
语法
参数说明
:BINARY 类型,Protobuf 编码的消息数据。为 NULL 时返回 NULL。<data>
:STRING 常量,消息类型名,如<message_name>
。'test.SimpleMsg'
:BINARY 常量,<descriptor>
生成的protoc --descriptor_set_out
,生成方法见 Protobuf 函数。FileDescriptorSet
:可选,<options>
常量,支持MAP<STRING, STRING>
、mode
、emit.default.values
,含义同 FROM_PROTOBUF。max.descriptor.bytes
返回 STRING 类型。输出格式遵循 Protobuf JSON 映射:
- 字段名转为 lowerCamelCase,如
输出为created_atcreatedAt - bytes 输出为 Base64 字符串
- enum 输出为枚举名
输出为 RFC 3339 时间字符串,google.protobuf.Timestamp
输出为如google.protobuf.Duration
的字符串"3661s"- 未设置的字段不输出;空消息输出
{}
使用示例
以下示例使用与 FROM_PROTOBUF 相同的
test.SimpleMsg 描述符:
data 字段的字节 01 02 03 输出为 Base64 字符串 AQID。double 类型按完整精度输出,因此 3.14 显示为 3.1400000000000001。
空消息输出
{}:
注意事项
- 输出字段名为 lowerCamelCase。
- 消息类型名和描述符必须是常量。
相关文档
联系我们
