Десериализация Джексона с общими аргументами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?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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