我一直在升级到更高版本的 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
上
最佳答案
长话短说:我弄乱了我的类路径,有两个类加载器,REST 方法的实现从数据库模块调用了一个存储库,从那里它从另一个类加载器获取了实例。在调整我的 Maven 范围和导入类型后,它现在可以工作了!
关于java - jackson 数据绑定(bind) "object is not an instance of declaring class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42232802/