当前位置: 首页 > 知识库问答 >
问题:

JSON解析错误:无法构造`com.dto.iddto`的实例(尽管至少存在一个创建者)

胡俊美
2023-03-14

我正在使用以下DTO:

public class IdDTO extends BasicResponseDTO {
    private long id;

    public IdDTO(long id) {
        this.id = id;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}

public class BasicResponseDTO implements Serializable {

    private String errorCode;

    public BasicResponseDTO() {
        this.setErrorCode(null);
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

}

我调用了一个REST web服务,并从Postman那里看到我(正确地)收到了以下响应:

{
    "errorCode": null,
    "id": 3534016
}
class org.springframework.web.client.RestClientException/Error while extracting response for type [class com.dto.IdDTO] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.dto.IdDTO` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.dto.IdDTO` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (PushbackInputStream); line: 1, column: 2]

附言。1)我还有其他扩展BasicResponseDTO的DTO,反序列化对它们很有效。

附言。2)在服务器和客户端上,类的定义是相同的。

共有1个答案

仇征
2023-03-14

IDDTO上没有默认构造函数。只有一个带ID:

public IdDTO(long id) {
    this.id = id;
}

你必须加上一个:

public IdDTO() {
}

这是JSON反序列化从类构造对象所需要的

 类似资料:
  • 当用Jackson反序列化LocationGeneric时,我在Kotlin中遇到了以下问题。在这种情况下,我没有向用于构造具体类的抽象类添加额外信息。当我反序列化位置一或位置二时,它工作得很好。 这是我写的代码: 这是我遇到的错误: 无法构造的实例(尽管至少存在一个Creator):无法从Object值反序列化(没有基于委托或属性的Creator) 我尝试将抽象类更改为开放类,但到目前为止没有成

  • 我有以下课 映射时 “workpoolId”:1 到这个班我得到一个 javax.ws.rs.ProcessingException:com.fasterxml.jackson.databind.exc.MismatchedInputException:无法构造的实例(尽管至少存在一个Creator):没有int/Int-参数构造函数/工厂方法从数字值反序列化(1) 为什么jackson不能对数值

  • 我向web服务添加了以下依赖项 现在我的代码中出现了以下问题,不知道哪里出了问题。在添加这个依赖项之前,它工作得很好。 下面是完整的pom 我不明白哪里出了问题

  • 问题内容: 我正在使用JAX-RS 1.0学习Jackson。服务器返回HTTP响应,如下所示: 并且我需要将JSON响应反序列化为Java对象: 在我的测试中,它无法构造对象: 客户端错误是: 无法构造(没有创建者,例如默认构造的实例)的实例:没有要从字符串值反序列化的字符串参数构造函数/工厂方法(‘2018-05-26T09:21:26.301 + 02:00’) 在服务器端,我配置了JSON

  • Spring启动版本:1.5.10 杰克逊版本:2.9.5 龙目岛版本:1.18.0 我有一个使用Kafka发送有效载荷的场景。在接收到有效载荷时,我试图断言接收者和发送者端的有效载荷是否相同。 首先,我创建了一个类,它将作为有效负载传递。类的结构如下所示。使用的lombok插件版本是1.18.0。 现在来谈主要问题。因此,在我的另一个测试用例中,我通过kafka发送有效负载,在收到来自kafka

  • 我正在JAX-RS 1.0下学习Jackson。服务器返回HTTP响应,如下所示: 我需要反序列化JSON响应到一个Java对象称为: 在我的测试中,它未能构造对象: 客户端错误是: 无法构造(不存在像默认构造那样的创建者):没有字符串参数构造函数/工厂方法从字符串值反序列化('2018-05-26T09:21:26.301 02:00')) 在服务器端,我配置了JSON映射器(但对我的测试没有影