【问题标题】:protocol buffer extensions and toString()协议缓冲区扩展和 toString()
【发布时间】:2014-07-29 03:29:49
【问题描述】:

我正在使用一些具有扩展名的协议缓冲区 (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' 的调试字符串是否正确(预期)或表示类加载或其他问题?”

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

【问题讨论】:

    标签: protocol-buffers


    【解决方案1】:

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

    【讨论】:

    • 所以.. 你有没有想过我这周应该下班待在家里?真的..我不应该尝试着感冒编码。据我所知,大脑完全停止运作。 Kenton,你说得对。我正在使用扩展注册表,但在另一个地方我正在重构一个 protobuf,没有扩展注册表。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2017-02-12
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多