С помощью ObjectMapper
, который вы собираетесь использовать для десериализации, сначала зарегистрируйте пользовательский десериализатор для класса Specific
.Затем он будет использовать это при десериализации экземпляров этого класса, независимо от того, десериализуете ли вы их напрямую или как свойство десериализации какого-либо другого объекта.
Например, вы можете сделать что-то вроде этого:
class SpecificDeserializer() : StdDeserializer<Specific>(Specific::class.java) {
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Specific {
// Deserialize
}
}
val mapper = jacksonObjectMapper()
mapper.registerModule(SimpleModule().also {
it.addDeserializer(Specific::class.java, SpecificDeserializer())
})
val foo = mapper.readValue<Foo>(...
Это объясняется здесь .Обратите внимание, что для сериализации можно использовать тот же подход.