-1
我有一个case class
Person(name:String, id:Int)
序列化的原因(MessagePack
),我需要将其转换为class
。有没有简单/优雅的方式来做到这一点,不需要太多的样板或创建?如何将案例类转换为类?
case class Person(name:String, id:Int)
- >class Person(name:String, id:Int)
我有一个case class
Person(name:String, id:Int)
序列化的原因(MessagePack
),我需要将其转换为class
。有没有简单/优雅的方式来做到这一点,不需要太多的样板或创建?如何将案例类转换为类?
case class Person(name:String, id:Int)
- >class Person(name:String, id:Int)
的情况类可以被序列化为因为它是事实上的一个普通的类“正常”类。 由于默认情况下所有的构造函数参数都是可访问的,所以它比一般的类更适合于序列化。
的案例类只是告诉编译器自动添加一些方法如等于和的hashCode到类。同时有一个伴随对象与申请方法添加,但这并不影响正常的类。
因此,如果出现序列化问题,那么问题的根源就在于别处。
您可以尝试json4shttps://github.com/json4s/json4s将您的案例类转换为JSON,然后将其转换为MessagePack格式。
import org.json4s._
import org.json4s.native.Serialization
import org.json4s.native.Serialization.{read, write}
implicit val formats = Serialization.formats(ShortTypeHints(List(classOf[Person])
val jsonString : String = write(Person("Andi", 42))
// convert with MessagePack as you would do with normal JSON
我不明白.Case类是一个类,只是一些额外的方法,我认为没有与MessagePack冲突。 –
如果你想要完全相同的功能,那么它有很多相同的功能:实现和维护'Person.apply','copy','equals','hashCode','toString'和派生自'Product'。 – rightfold