我正在使用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;
}
如何WrapperMessage
知道要在其中添加Login
消息msg
?
val login = Login(email = "[email protected]", password = "testpass")
val wrapperMessage = WrapperMessage(???)
val wrapperMessageBytes = wrapperMessage.toByteArray
现在让我们说我收到一个WrapperMessage
电线。如何使用ScalaPB案例类方法反序列化消息?
ScalaPB的文档清楚地提供了我所问问题的示例。在这个答案中,我针对我的问题定制了ScalaPB上提供的示例。
用以下命令初始化消息oneof
:
val login = Login(email = "[email protected]", password = "testpass")
val wrapperMessage = WrapperMessage().withLogin(login)
匹配消息的oneof
字段:
wrapperMessage.msg match {
case Msg.Login(l) => // handle l
case Msg.Register(r) => // handle r
case Msg.Empty => // handle exceptional case...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句