Vad*_*kan 9 serialization scala scala-pickling
我正在尝试使用"pickling"序列化是Scala,我看到同样的例子演示它:
import scala.pickling._
import json._
val pckl = List(1, 2, 3, 4).pickle
Run Code Online (Sandbox Code Playgroud)
Unpickling就像酸洗一样简单:
val lst = pckl.unpickle[List[Int]]
Run Code Online (Sandbox Code Playgroud)
这个例子提出了一些问题.首先,它跳过将对象转换为字符串.显然你需要调用pckl.value来获取json字符串表示.
Unpickling更令人困惑.反序列化是将字符串(或字节)转换为对象的行为.如果没有对象的字符串/ binry表示,这个"示例"如何演示反序列化?
那么,如何用酸洗库反序列化简单对象呢?
使用类型系统和案例类来实现您的目标.您可以在层次结构中对某些优秀类型进行unpickle(包括AnyRef).这是一个例子:
trait Zero
case class One(a:Int) extends Zero
case class Two(s:String) extends Zero
object Test extends App {
import scala.pickling._
import json._
// String that can be sent down a wire
val wire: String = Two("abc").pickle.value
// On the other side, just use a case class
wire.unpickle[Zero] match {
case One(a) => println(a)
case Two(s) => println(s)
case unknown => println(unknown.getClass.getCanonicalName)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6045 次 |
| 最近记录: |