我希望能够使用斯卡拉酸洗为了存储案例类的二进制表示。斯卡拉酸洗案例类版本
我想知道是否有管理案例类(单向协议缓冲区允许这样做)
这里是我的榜样
我做一个程序在版本管理办法某日,有下列情形类
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