我正在使用带有grpc的proto3,并且正在寻找一种更有效的方式来创建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
}
}
如何创建TestMessage?我看了看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);