【发布时间】:2015-05-21 01:19:15
【问题描述】:
有时该类只有一个要序列化的成员(其他成员是瞬态的),我想将该类作为其唯一成员进行序列化和反序列化。
考虑以下代码:
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper
case class Content(i:Seq[Int])
case class Wrap(content:Content)
object Main extends App {
val om = new ObjectMapper() with ScalaObjectMapper {
registerModule(new DefaultScalaModule)
}
val roots = Wrap(Content(Seq(1,2,3)))
val out = om.writeValueAsString(roots)
println(out)
val test = om.readValue(out, classOf[Wrap])
println(test)
}
Wrap的序列化结果是{"content":{"i":[1,2,3]}}。
我只想得到{"i":[1,2,3]}。我想我可以使用自定义序列化器/反序列化器来做到这一点,但在实际情况下,内容是一个复杂的类,这意味着我必须手动序列化内容,如果我没记错的话。我更喜欢一些更直接的解决方案。
是否可以将序列化/反序列化“委托”给成员/构造函数参数?
【问题讨论】:
标签: scala serialization jackson