【发布时间】:2017-07-03 03:14:58
【问题描述】:
我一直在升级到更高版本的 jackson(即从 org.codehaus... 到 com.fasterxml...),突然间我遇到了许多奇怪的错误。经过数小时的尝试和调整,我仍然无法让它工作,所以我问你们是否可以帮助我。
我有以下方法:
@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"])
我一无所知,这里有什么问题?
编辑
我也尝试在除String streetNumber 之外的所有内容上使用@JsonIgnore,但同样的异常仅发生在streetNumber 上
【问题讨论】:
-
我似乎对类加载器有一些问题。我添加了一些调试输出(或尝试添加)并收到如下错误:
<long package>.SearchResultDto cannot be cast to <long package>.SearchResultDto
标签: java json data-binding jackson