Начиная с версии 2.10.0 эта проблема решается путем добавления нового набора методов: activateDefaultTyping
вместо устаревшего набора методов enableDefaultTyping
. Также эта проблема была одной из причин, почему эта версия была выпущена.
Основные цели на 2.10
Оглядываясь назад, было три основные цели для этого вспомогательного выпуска:
- Устранить растущую проблему «бесконечных патчей CVE», потока исправлений для сообщаемых CVE, связанных с проблемой «Полиморфной десериализации» (описанной в « О CVS Джексона… »), которая привела к безопасностиинструменты форсирования Джексона. 2.10 теперь включает «Безопасный ввод по умолчанию», который, как надеются, решит эту проблему.
Подробнее вы можете найти в этой статье: Особенности Jackson 2.10 .
Пример кода:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;
import java.util.ArrayList;
public class JsonPathApp {
public static void main(String[] args) throws Exception {
PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder()
.allowIfSubType(MyValue.class)
.allowIfSubType(ArrayList.class)
.build();
ObjectMapper mapper = JsonMapper.builder()
.enable(SerializationFeature.INDENT_OUTPUT)
.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.NON_FINAL).build();
}
}