当json中的值为Option[Something]
(而不是字符串null
时,使用jackson,如何覆盖从json到"null"
的反序列化,但只是null
)?
例如,假设我有case class MyType(data: Option[MyType])
。对于以下json
{
"data": null
}
我得到MyType(None)
,但我想获得MyType(Some(something_else))
,或者至少能够在json中Option[_]
字段为null
时覆盖杰克逊的行为。
我创建了一个自定义反序列化器,例如class MyTypeDeserializer extends JsonDeserializer[MyType]
,如果data
是字符串"null"
,则可以正常工作。但是,如果它只是null
(因为它必须是由于我的要求),它根本不起作用。我覆盖了我的自定义反序列化程序的getNullValue
甚至getEmptyValue
,它适用于非选项类型,但仍然无济于事。如果我将反序列化为Option[MyType]
并且值为null
,则杰克逊根本不会调用我的反序列化器...