java - 为什么我得到 org.codehaus.jackson.map.JsonMappingException : No suitable constructor found for type

标签 java spring rest spring-mvc

有人可以告诉我为什么我会收到 org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type error?

这是我的电话:

try
        {
            String jsonreturn = restTemplate.getForObject("http://" + mRESTServer.getHost() + ":8080/springmvc-rest-secured-test/json/{name}", String.class, vars);
            LOGGER.debug("return object:  " + jsonreturn.toString());
        } catch (HttpClientErrorException e)
        {
            /**
             *
             * If we get a HTTP Exception display the error message
             */

            LOGGER.error("error:  " + e.getResponseBodyAsString());

            ObjectMapper mapper = new ObjectMapper();
            ErrorHolder eh = mapper.readValue(e.getResponseBodyAsString(), ErrorHolder.class);

            LOGGER.error("error:  " + eh.errorMessage);

        }

我正在尝试测试错误,所以我应该创建一个 ErrorHolder 对象,但我收到了错误;

这是我的 ErrorHolder 类:

public class ErrorHolder
{


    public String errorMessage;

    public ErrorHolder(String errorMessage)
    {
        this.errorMessage = errorMessage;
    }

    public String getErrorMessage()
    {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage)
    {
        this.errorMessage = errorMessage;
    }

    @Override
    public String toString()
    {
        return "ErrorHolder{" +
                "errorMessage='" + errorMessage + '\'' +
                '}';
    }
}

我不知道为什么会出现以下错误:

2013-06-12 14:36:32,138 [main] ERROR Main - error:  {"errorMessage":"Uh oh"}
Exception in thread "main" org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ErrorHolder]: can not instantiate from JSON object (need to add/enable type information?)
 at [Source: java.io.StringReader@628016f7; line: 1, column: 2]

最佳答案

两个选项,要么你提供一个默认的无参数构造函数来完成这项工作。但是,对于您的用例,@JsonCreator 提供了一个更好的解决方案恕我直言。和 @JsonProperty :

public class ErrorHolder
{
    public String errorMessage;

    @JsonCreator
    public ErrorHolder(@JsonProperty("errorMessage") String errorMessage)
    {
        this.errorMessage = errorMessage;
    }

    // getters and setters
 }

关于java - 为什么我得到 org.codehaus.jackson.map.JsonMappingException : No suitable constructor found for type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072927/

相关文章:

java - 如何在cucumber java中创建另一个模块的路径?

spring - OSGI 类不可见,即使所需的 JAR 位于 Bundle-classpath 中

rest - CakePHP REST 基本映射未按预期工作

spring - 在 Spring Boot 2 中,是否可以自动生成具有唯一约束的 JoinTable?

rest - jaxrs 是 :server required for cxf:rsServer when using camel?

java - 通过包名扫描resteasy资源

java - 登录成功后如何获取用户名?

java - 如何更改 p.getProperty 的返回值 ("os.arch");

java - 从微调器中提取值并将其用于计算 - NullPointerException

spring - 找不到正在获取项目 'org.springframework.boot:spring-boot-starter-parent:2.6.0-SNAPSHOT'