我一直在成功地使用 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這里引發了錯誤,但我不確定,因為被覆寫的方法回傳一個布林值,有什么想法嗎?
uj5u.com熱心網友回復:
我對杰克遜不太熟悉,但只是在 github 上快速瀏覽了一些示例,發現你應該讓你的 JsonDeserializer 類知道它應該在編譯時反序列化哪種型別,所以:
case class BooleanKeyDeserializer() extends JsonDeserializer[Boolean]
可能會適合你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/455957.html
