java - jackson 数据绑定(bind) "object is not an instance of declaring class"

标签 java json data-binding jackson

我一直在升级到更高版本的 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/

相关文章:

javascript - 在 PHP 和 Ajax 中使用 Json 传递值

android - 使用 Parcelable 传递 List<String>

Silverlight使用MVVM将集合绑定(bind)到DataForm中的Combobox

java - Android Studio 中未生成 MainActivityBinding 文件

java - 第458章 UVA解码器解释(line.charAt(i)-7)

java - 自动部署到sonatype的oss maven仓库

java - 如何合并2个链表

json - 在 Elm 中解析嵌套的 JSON

.net - OrderBy、GetNewBindingList 和 Linq to SQL

java - 在另一个项目中复制 POJO 等 Hibernate 实体的最简洁方法