-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