Я хочу использовать библиотеку jackson json для общего метода следующим образом:
public MyRequest<T> tester() {
TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>();
MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef);
return requestWrapper.getRequest();
}
...
public class MyWrapper<T> {
private MyRequest<T> request;
public MyRequest<T> getRequest() {
return request;
}
public void setRequest(MyRequest<T> request) {
this.request = request;
}
}
public class MyRequest{
private List<T> myobjects;
public void setMyObjects(List<T> ets) {
this.myobjects = ets;
}
@NotNull
@JsonIgnore
public T getMyObject() {
return myobjects.get(0);
}
}
Теперь проблема в том, что когда я вызываю getMyObject (), который находится внутри объекта запроса, Джексон возвращает вложенный настраиваемый объект как LinkedHashMap. Есть ли способ указать, что объект T должен быть возвращен? Например: если я отправил объект типа Customer, тогда Customer должен быть возвращен из этого списка ?.
Спасибо.
TypeReference
абстрактно?Ответы:
Это хорошо известная проблема со стиранием типа Java: T - это просто переменная типа, и вы должны указать фактический класс, обычно как аргумент класса. Без такой информации лучшее, что можно сделать, - это использовать границы; а простой T примерно такой же, как «T extends Object». Затем Джексон привяжет объекты JSON как карты.
В этом случае метод тестера должен иметь доступ к классу, и вы можете построить
а потом
источник
«JavaType» работает !! Я пытался демаршалировать (десериализовать) список в json String для Java-объектов ArrayList и пытался найти решение несколько дней.
Ниже приведен код, который наконец дал мне решение. Код:
источник
IOException
(нужен только один улов) и что интроспектор аннотаций по умолчанию уже естьJacksonAnnotationIntrospector
- поэтому не нужно ничего делатьObjectMapper
, просто создайте его, и он работает.Я изменил ответ rushidesai1 чтобы включить рабочий пример.
JsonMarshaller.java
Вывод
JsonMarshallerUnmarshaller.java
Station.java
data.json
источник