有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jackson MRBean不工作,无法构造实例

我有以下代码:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.registerModule(new MrBeanModule());

这个测试用例:

SearchResultContainer src = objectMapper.readValue("{}", SearchResultContainer.class);

SearchResultContainer是一个POJO接口(这就是这里使用MRBean的全部原因)

为什么会出现以下例外情况而失败

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.ctc.rets.dto.search.SearchResultContainer` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
 at [Source: (String)"{}"; line: 1, column: 1]
    at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
    at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1451)
    at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1027)
    at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:265)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2992)
    at com.ctc.web.client.CustomRestTemplateTest.test1(CustomRestTemplateTest.java:25)

共 (1) 个答案

  1. # 1 楼答案

    pom中发现MRBean的版本不正确。xml

    修正:

    <!  https://mvnrepository.com/artifact/com.fasterxml.jackson.module/jackson-module-mrbean  >
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-mrbean</artifactId>
        <version>2.9.8</version>
    </dependency>