协议缓冲区扩展和toString()

时间:2014-07-29 03:29:49

标签: protocol-buffers

我正在使用一些具有扩展名的协议缓冲区(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'正确的(预期的)或指示课程负载或其他问题?'

我还没有找到一种方法来打印一个涉及注册表的字符串,只是简单地“合并”,所以我假设没有必要?

1 个答案:

答案 0 :(得分:1)

问题可能是您从二进制文件解析消息时未提供ExtensionRegistry。因此,扩展被视为未知领域。当您稍后打印消息时,扩展名仍然未知,因此打印时如您所见。解决方案是在解析时提供注册表,例如DataConfig.parseFrom(bytes, registry)