如何使用ScalaPB对使用'oneof'的protobuf消息进行序列化/反序列化?

爱德华·麦克森(Edward Maxedon)

我正在使用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案例类方法反序列化消息?

爱德华·麦克森(Edward Maxedon)

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

fastxml使用toString进行序列化,并使用String构造函数进行反序列化

如何使用Woodstox StAX 2对XML中的类进行序列化/反序列化

使用google-gson进行JSON序列化/反序列化通用类型

如何反序列化prpBytes(描述中的链接src)(ProposalResponsePayload protobuf消息)到对象原始

使用无参数构造函数对对象进行序列化和反序列化

没有proto文件,如何反序列化protobuf?

Jackson:使用其他属性名称进行序列化/反序列化

使用Json.NET对混合类型的数组进行序列化/反序列化

使用json.net对对象属性进行条件序列化/反序列化

为什么protobuf序列化“ oneof”消息使用if-else

如何从HttpResponseMessage反序列化protobuf内容

ProtoBuf不会使用接口反序列化对象

使用springboot在KafkaConsumer中反序列化kafka消息

意外的令牌:使用自定义转换器反序列化OneOf联合类型时出现StartObject

使用Firestore DB进行Flutter数据序列化和反序列化

使用JsonTypeInfo进行序列化/反序列化

如何使用反序列化的对象?

使用Jackson JSON是否可以进行非对称序列化和反序列化?

JSON使用.NET DataContractJsonSerializer序列化器与字典进行序列化/反序列化

使用Jersey和Jackson进行Map的序列化和反序列化

使用plpgsql序列化/反序列化

如何使用Solr / Lucene对地图进行序列化/反序列化?

使用JMS序列化器进行XML反序列化

ServiceStack使用对象对字典进行序列化和反序列化

使用 JsonProperty 进行反序列化但不序列化

Protobuf 中重复字段的问题。使用重复字段进行序列化/反序列化的更好方法是什么?

如何使用 ByteArray 进行对象序列化和反序列化

c#confluent.kafka 无法使用 Protobuf-net 反序列化 protobuf 消息

如何使用模式 id 序列化 protobuf 消息