0

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

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

4

1 回答 1

1

案例类可以序列化为“普通”类,因为它实际上是普通类。由于它使所有构造函数参数默认可访问,因此它比普通类更适合序列化。

case 类只是告诉编译器自动将一些方法作为equalshashCode添加到类中。同时还有一个伴生对象,添加了一个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
于 2014-12-23T13:27:54.087 回答