Я обновляю до более поздней версии jackson (т. Е. От org.codehaus ... до com.fasterxml ...), и вдруг я столкнулся со многими странными ошибки. После нескольких часов попыток и корректировки я все еще не могу заставить его работать, поэтому я прошу вас, ребята, если вы можете мне помочь.jackson-databind "object не является экземпляром объявления класса"
У меня есть следующий метод:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("getTerminalsByIdAndLocation")
List<SearchResultDto> getTerminalsByIdAndLocation(@QueryParam("location") String location, @QueryParam("id") Integer id) throws BusinessException;
и что реализация функции просто делает поиск в хранилище.
SearchResultDto выглядит следующим образом:
@JsonIgnoreProperties(ignoreUnknown = true)
public class SearchResultDto implements Serializable {
private static final long serialVersionUID = 1L;
private TerminalId terminalId;
private Integer location;
private String streetNumber;
private String postalcoldeCity;
private Status status;
// getters and setters with no annotation or so
}
Когда я теперь называю свой метод я получаю следующее сообщение об ошибке:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>.SearchResultDto["terminalId"])
После долгих попыток я думал, что я буду просто удалите terminalId, а затем он изменится на:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>AtmSearchResultDto["location"])
Я не знаю, что здесь не так?
EDIT
Я также попытался с помощью @JsonIgnore на все, кроме String streetNumber
, но то же самое происходит исключение только для streetNumber
У меня, похоже, есть проблемы с загрузчиками классов или около того. Я добавил некоторый отладочный вывод (или попытался) и получил ошибку, подобную: ' .SearchResultDto нельзя отнести к <длинному пакету> .SearchResultDto' –