Protobuf:如何使用现有的案例类

时间:2018-03-22 11:33:00

标签: scala protocol-buffers protobuf-java

项目中已经使用了案例类。 这些类也用于光滑映射。这些类扩展了一些额外的特性。

我不想从*.proto说明生成所有这些类。

是否有机会在protobuf中扩展它们? 或者我应该为他们使用包装。这些包装器将在*.proto中描述并从中生成。

1 个答案:

答案 0 :(得分:1)

用于原型定义

message PBPerson {
  int64 id = 1;
  string name = 2;
  google.protobuf.StringValue phone = 3;
  repeated string hobbies = 4;
}

和Scala案例类定义

case class Person(
  id: Long,
  name: String,
  phone: Option[String],
  hobbies: Seq[String])

你可以使用because of syntax limitations

import pbconverts.{ Protoable, Scalable }
val convertedPBPerson:PBPerson = Protoable[Person,PBPerson].toProto(person)
val convertedPerson:Person = Scalable[Person,PBPerson].toScala(pbPerson)

此外,此库使用 Scala 宏来确保它是类型安全转换。