你如何将案例类转换为类?

时间:2014-12-23 06:53:50

标签: json scala messagepack

出于序列化原因(case class),我有一个Person(name:String, id:Int) MessagePack,我需要将其转换为class。是否有一种简单/优雅的方式来做到这一点,不需要太多的样板或创作?

case class Person(name:String, id:Int) - > class Person(name:String, id:Int)

1 个答案:

答案 0 :(得分:2)

案例类可以序列化为“普通”类,因为它实际上是普通类。 因为它使所有构造函数参数在默认情况下都可访问,所以它比正常类更适合序列化。

案例类只是告诉编译器自动将一些方法作为等于 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