Scala jackson - 自定义解串器不兼容类型

Scala jackson - custom deserializer incompatible type

我已经成功地使用 Jackson serialize/deserialize 我的 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: com.fasterxml.jackson.core.JsonParser, x: com.fasterxml.jackson.databind.DeserializationContext)Nothing; method deserialize has incompatible type

我认为可能是这里的 Nothing 引发了错误,但我不确定,因为被覆盖的方法 returns 是一个布尔值,有什么想法吗?

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

case class BooleanKeyDeserializer() extends JsonDeserializer[Boolean]

可能很适合你。