我正在使用 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] /cdn-cgi/l/email-protection", password = "testpass")
val wrapperMessage = WrapperMessage(???)
val wrapperMessageBytes = wrapperMessage.toByteArray
假设现在我收到了WrapperMessage
通过电线;如何使用 ScalaPB 案例类方法反序列化消息?
ScalaPB 的文档清楚地提供了我提出的问题的示例。在这个答案中,我根据我的问题定制了 ScalaPB 上提供的示例。
初始化消息oneof
:
val login = Login(email = "[email protected] /cdn-cgi/l/email-protection", password = "testpass")
val wrapperMessage = WrapperMessage().withLogin(login)
匹配消息的oneof
field:
wrapperMessage.msg match {
case Msg.Login(l) => // handle l
case Msg.Register(r) => // handle r
case Msg.Empty => // handle exceptional case...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)