我正在使用一些具有扩展名的协议缓冲区(java)。我似乎能够解析序列化协议缓冲区(无论如何都没有错误),但出于调试目的(还有另一个问题),我将它们打印到日志中。
我在日志中散布了这些类型的东西:
data_config {
format: FORMAT_DELIMITED
1024: "\022\001\n"
}
这里是消息定义:
message DataConfig {
optional DataFormat format = 1;
extensions 1024 to max;
option (dwhio.data.message_reflection_config) = { reflect_extensions: true };
}
我的问题是'日志中的调试字符串是' 1024'正确的(预期的)或指示课程负载或其他问题?'
我还没有找到一种方法来打印一个涉及注册表的字符串,只是简单地“合并”,所以我假设没有必要?
答案 0 :(得分:1)
问题可能是您从二进制文件解析消息时未提供ExtensionRegistry
。因此,扩展被视为未知领域。当您稍后打印消息时,扩展名仍然未知,因此打印时如您所见。解决方案是在解析时提供注册表,例如DataConfig.parseFrom(bytes, registry)
。