我希望能夠使用斯卡拉酸洗爲了存儲案例類的二進制表示。斯卡拉酸洗案例類版本
我想知道是否有管理案例類(單向協議緩衝區允許這樣做)
這裏是我的榜樣
我做一個程序在版本管理辦法某日,有下列情形類
case class MessageTest(a:String,b:String)
然後我序列這個類的一個實例
import scala.pickling._
import binary._
val bytes=MessageTest("1","2").pickle
然後我將結果保存到一個文件
後來,我現在可能不得不做出的演變對我而言類,添加新的可選字段
case class MessageTest (a:String,b:String,c:Option[String]=None)
我希望能夠重新使用我以前存儲在我的文件中的數據,對其進行反序列化並能夠恢復案例類的實例(對於新參數使用默認值)
但是,當我使用下面的代碼
import scala.pickling._
import binary._
val messageback=bytes.unpickle[MessageTest]
我得到了以下錯誤:
java.lang.ArrayIndexOutOfBoundsException:26 在scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.適用(BinaryPickleFormat .scala:446) at scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.apply(BinaryPickleFormat.scala:434) at scala.pickling.PickleTools $ class.withHints(Tools.scala:498) at scala.pickling .binary.BinaryPickleReader.withHints(BinaryPickleFormat.scala:425) at scala.pickling.binary.BinaryPickleReader.beginEntryNoTagDebug(BinaryPickleFormat.scala:434) 在scala.pickling.binary.BinaryPickleReader.beginEntryNoTag(BinaryPickleFormat.scala:431)
難道我做錯了什麼?
有沒有現成的方法來使我的方案工作?
問候
沉默......我有同樣的問題,@Fred找到了解決方案嗎? – Emer 2016-02-23 11:54:28
我們正在考慮使用'Map'類型作爲解決方法。 http://docs.scala-lang.org/overviews/collections/maps – Emer 2016-02-23 12:06:26