gpt4 book ai didi

Java打印未知类型的protobuf对象

转载 作者:搜寻专家 更新时间:2023-10-31 20:00:44 26 4
gpt4 key购买 nike

假设我有字节数组 - byte[],它代表某种序列化的 protobuf 对象。有什么办法可以打印输出,比如

1: 123
2: Jhon
3: Doe
4: 0

其中 1 是 int 字段,2 和 3 是字符串,4 是 boolen

TextFormat.print 要求我提供 protobuf 对象的具体 Builder,我不知道。

最佳答案

定义一个 EmptyMessage 类型,例如:

message EmptyMessage {
// nothing
}

现在将您的消息解析为 EmptyMessage,然后对其调用 toString()

为什么会这样?好吧,考虑一下向消息类型添加字段是向后兼容的。当您添加一个字段,然后使用该字段将消息发送到不是在了解该字段的情况下构建的旧程序时,该字段将被视为“未知字段”。未知字段打印为数字/值对。现在,如果您从 EmptyMessage 开始并添加字段,您显然可以获得任何其他消息。因此,所有消息类型都与 EmptyMessage“向后兼容”。因此,任何消息都可以解析为EmptyMessage,将所有字段都视为未知字段。

关于Java打印未知类型的protobuf对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35988721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com