Scala-Jjackson-自定义反序列化程序不兼容类型



我已经成功地使用Jackson来序列化/反序列化我的scala对象,但在向我的一个属性添加自定义反序列化程序时遇到了问题。

case class Test(
@JsonDeserialize(using = classOf[BooleanKeyDeserializer]) boolValue: Option[Boolean]
)
import com.fasterxml.jackson.core.{JsonParser, JsonProcessingException}
import com.fasterxml.jackson.databind.{DeserializationContext, JsonDeserializer}
case class BooleanKeyDeserializer() extends JsonDeserializer {
@throws[IOException]
@throws[JsonProcessingException]
override def deserialize(p: JsonParser, ctxt: DeserializationContext): Boolean = {
true
}
}

错误:overriding method deserialize in class JsonDeserializer of type (x$1: com.fasterxml.jackson.core.JsonParser, x$2: com.fasterxml.jackson.databind.DeserializationContext)Nothing; method deserialize has incompatible type

我认为可能是这里的Nothing抛出了一个错误,但我不确定,因为重写的方法返回了一个布尔值,有什么想法吗?

我对Jackson不太熟悉,但只是快速查看了github上的一些示例,发现应该让JsonDeserializer类知道它应该在编译时反序列化哪种类型,所以:

case class BooleanKeyDeserializer() extends JsonDeserializer[Boolean]

可能很适合你。

最新更新