我有一个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)
案例类可以序列化为“普通”类,因为它实际上是普通类。由于它使所有构造函数参数默认可访问,因此它比普通类更适合序列化。
case 类只是告诉编译器自动将一些方法作为equals和hashCode添加到类中。同时还有一个伴生对象,添加了一个apply方法,但这完全不影响普通类。
因此,如果序列化出现问题,那么问题的根源就在其他地方。
您可以尝试json4s https://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