Edw*_*don 3 scala protocol-buffers scalapb
我正在使用ScalaPB来编译我的Scala案例类,以便序列化我的protobuf消息.
我有一个.proto包含以下消息的文件:
message WrapperMessage {
oneof msg {
Login login = 1;
Register register = 2;
}
}
message Login {
required string email = 1;
required string password = 2;
}
message Register {
required string email = 1;
required string password = 2;
optional string firstName = 3;
optional string lastName = 4;
}
Run Code Online (Sandbox Code Playgroud)
我怎么创建我WrapperMessage知道我想在Login里面放一条消息msg?
val login = Login(email = "test@example.com", password = "testpass")
val wrapperMessage = WrapperMessage(???)
val wrapperMessageBytes = wrapperMessage.toByteArray
Run Code Online (Sandbox Code Playgroud)
现在让我们说我收到WrapperMessage了电线; 如何使用ScalaPB案例类方法反序列化消息?
ScalaPB的文档清楚地提供了我所问的问题的示例.在这个答案中,我根据我的问题定制了ScalaPB上提供的示例.
使用以下内容初始化消息oneof:
val login = Login(email = "test@example.com", password = "testpass")
val wrapperMessage = WrapperMessage().withLogin(login)
Run Code Online (Sandbox Code Playgroud)
要匹配邮件的oneof字段:
wrapperMessage.msg match {
case Msg.Login(l) => // handle l
case Msg.Register(r) => // handle r
case Msg.Empty => // handle exceptional case...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3177 次 |
| 最近记录: |