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]
可能很适合你。
我已经成功地使用 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]
可能很适合你。