gpt4 book ai didi

scala - 如何使用 ScalaPB 序列化/反序列化使用 'oneof' 的 protobuf 消息?

转载 作者:行者123 更新时间:2023-12-03 04:47:18 27 4
gpt4 key购买 nike

我正在使用 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;
}

知道我想将 Login 消息放入 msg 中,如何创建 WrapperMessage

  val login = Login(email = "test@example.com", password = "testpass")
val wrapperMessage = WrapperMessage(???)
val wrapperMessageBytes = wrapperMessage.toByteArray

假设现在我正在通过线路接收一个 WrapperMessage;如何使用 ScalaPB 案例类方法反序列化消息?

最佳答案

ScalaPB 的文档清楚地提供了我提出的问题的示例。在这个答案中,我根据我的问题定制了 ScalaPB 上提供的示例。

使用oneof初始化消息:

val login = Login(email = "test@example.com", 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...
}

关于scala - 如何使用 ScalaPB 序列化/反序列化使用 'oneof' 的 protobuf 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com