我将 proto3 与 grpc 结合使用,并且正在寻找一种更有效的方法来创建 protobuf 消息,而无需使用构建器并填充它。
如果我有一个字符串(来自 Message.toString()),我可以使用该字符串重新创建消息吗?
如果我有消息类型
message TestMessage {
bool status = 1;
uint64 created = 2;
TestNested submessage = 3;
message TestNested {
int32 messageNumber = 1;
Entry entry = 2;
}
message Entry {
int32 id = 1;
EntryType entryType = 2;
}
enum EntryType {
DEFAULT_ENTRY = 0;
OTHER_ENTRY = 1;
}
}
以及以下输出:
status: true
created: 1534240073415
submessage {
messageNumber: 3
entry{
id: 47957
entryType: DEFAULT_ENTRY
}
}
如何创建测试消息?我查看了 JavaDoc,看看是否有一个接受字符串的 parseFrom()
方法,但我没有获胜。
最佳答案
我正在寻找TextFormat解析器。 Message.toString()
打印的格式是 TextFormat 表示形式。
为了转换回 protobuf 消息,我执行了以下操作:
TestMessage testMessage = new TestMessage.newBuilder();
CharSequence myText = "status: true\n ...";
com.google.protobuf.TextFormat.getParser().merge(myText, testMessage);
关于Java:来自字符串的 protobuf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151314/