Десериализация Джексона с общими аргументамиJAVA

Программисты JAVA общаются здесь
Гость
Десериализация Джексона с общими аргументами

Сообщение Гость »


работал с десериализацией Джексона и пытался найти способ не передавать класс явно для десериализации. Вот что у меня есть:

public T deserialize(String json) { вар картограф = новый ObjectMapper(); вар typeReference = новый TypeReference(){}; return mapper.readValue(json, typeReference); } // код вызова var someJson = {\"SomeKey\": \"SomeValue\"} Модель MyModel = deserialize(someJson); с помощью приведенного выше кода я получаю ClassCastException, сообщающий:

этот класс java.util.LinkedHashMap нельзя привести к классу com.personal.carrot.MyModel.

Теперь я знаю, что мы можем заставить его работать, передав модель в качестве аргумента методу:

public T deserialize(String json, TypeReference typeReference) { вар картограф = новый ObjectMapper(); return mapper.readValue(json, typeReference); } // код вызова var someJson = {\"SomeKey\": \"SomeValue\"} вар typeRef = новый TypeReference(){}; Модель MyModel = deserialize(someJson, typeRef); Из сообщения stackoverflow я понимаю, что он принимает LinkedHashMap в качестве типа по умолчанию, поскольку T будет означать, что T расширяет Object>.

Есть ли способ получить десериализацию без явной передачи new TypeReference(){} или MyModel.class?

Вернуться в «JAVA»