Do kontrolera wysyłam obiekt DTO https://pastebin.com/d4SHZuZh. Do deserializacji z JSON używam klasy Builder @JsonDeserialize(builder = ContributionNewRequest.Builder.class)
.
Elementami kolekcji są obiekty typu ? extends MovieInfoDTO
dziedziczące z MovieInfoDTO
.
Kiedy pobieram elementy z listy np. elementsToAdd
contribution.getElementsToAdd()
.forEach(boxOffice -> {
...
});
okazuje się, że obiekt boxOffice
jest typu java.util.LinkedHashMap
.
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.jonki.popcorn.common.dto.movie.BoxOffice
at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_171]
Znalazłem wzmiankę na ten temat w internecie http://www.baeldung.com/jackson-collection-array, że elementy z kolekcji podczas konwersacji z JSON na typ Java są domyślnie ustawiane jako LinkedHashMap
.
Jaki zabieg powinienem zastosować, aby poprawnie konwertowało obiekty na mój typ ? extends MovieInfoDTO
.