Код: Выделить всё
@JsonSubTypes({
@JsonSubTypes.Type(
value = DataProcessingJob.class,
name = "data_processing_job")
})
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
public interface JobDefinition {
...
}
public record DataProcessingJob() implements JobDefinition {
...
}
Код: Выделить всё
private static final ObjectMapper OBJECT_MAPPER =
Json.mapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
OBJECT_MAPPER.readValue(jsonBlob, DataProcessingJob.class);
Причина: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: не удалось разрешить подтип [простой тип, класс models.job.DataProcessingJob]: отсутствует идентификатор типа свойства 'type'
Что вполне логично, у этих заданий нет идентификатора типа type . Однако есть ли способ позволить Джексону десериализовать эти старые задания без аннотации типа? На данный момент мы знаем тип, который нужно сериализовать, DataProcessingJob в этом примере.
Могу ли я десериализовать подкласс явно без его свойства идентификатора типа в самом JSON?