我有下一个scala类型:
case class Wrapper(v: Type)
sealed trait Type
case object TypeA extends Type
case object Typeb extends Type
我想使用Wrapper
使用以下代码序列化和反序列化jackson
:
val mapper: ObjectMapper = new ObjectMapper
mapper.registerModule(DefaultScalaModule)
val src = Wrapper(TypeA)
val txt = mapper.writeValueAsString(src)
val dst: Wrapper = mapper.readValue(txt, classOf[Wrapper])
不幸的是,此代码无效,因为txt
为"{"v":{}}"
。
如何正确序列化/反序列化?
如果jackson
无法执行此操作,那还有其他库吗?
答案 0 :(得分:0)
我发现只有这样做的可能方法是自定义的seralizer和deseralizer。
您必须为密封特征实施id = 2
和JsonSerializer
,并使用JsonDeserializer
和@JsonSerialize
标记您的特征。
或者您可以在@JsonDeserialize
中注册serealizer和反序列化器。