У меня есть тип, называемый OptionalField<T>
, который может быть либо пустым(), defined(value)
(как обычный факультативный), либо nullValue(default)
(представляет собой значение по умолчанию в JSON, которое может быть чем-то вроде "n/a" или такой).Jackson deserialize generic class, custom optional
Моя проблема с Джексоном, потому что мне нужно создать собственный сериализатор и десериализатор, способный идентифицировать общий тип и найти соответствующий сериализатор по умолчанию, десериализатор. У меня не было особых проблем, создавая сериализатор с контекстную интерфейсом, поскольку он предоставляет свойство и Serializer provider
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException {
...
JsonSerializer<Object> serialiser = prov.findValueSerializer(property.getType().containedType(0).getRawClass(), property);
...
}
Но десериализатор что-то еще, я не могу найти способ, чтобы определить тип и и найти десериализации по умолчанию. Вы знаете, как я могу это сделать? Я читал некоторые вещи о BeanDeserializers, но я не думаю, что он отвечает на мою проблему.
Update
Я прошел через библиотеку https://github.com/FasterXML/jackson-datatype-jdk8, чтобы понять, как они это делают, и это, кажется, очень низкий уровень манипуляции (типы и SCALA). Неужели нет другого способа сделать это? Еще один способ использовать Джексона? Это действительно похоже на общий прецедент для меня (общие классы, которые я имею в виду)?