杰克逊无法使用一个参数构造器构造实例

Bimo Adityarahman:

我正在使用Spring Boot创建一个Web应用程序。端点之一期望json对象具有一个属性,即studentId我正在像其他功能一样使用DTO来捕获有效负载。

@PostMapping("/courses/{id}/students")
public SuccessResponse<Void> addEnrolls(@PathVariable Long id, @RequestBody StudentIdPayload payload) throws HandledException {
    courseService.addEnrolls(id, payload.getStudentId());
    return success(HttpStatus.OK);
}
@Data
@AllArgsConstructor
public class StudentIdPayload {
    private Long studentId;
}

但是,当我尝试使用json body发布终结点时{"studentId":1},出现以下错误:

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.bimoadityar.univms.dto.input.StudentIdPayload` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)

如果我仅使用值发布,则可以使用1

如何使它与对象有效负载一起使用?

有趣的是,当我向中添加另一个属性StudentIdPayload(例如)时String placeholder,它可以按预期工作,尽管此解决方案让人觉得有些棘手。

德和和幸(Kazuyuki Dewa):

默认情况下,反序列化需要no-args构造函数,因此添加@NoArgsConstructor

@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentIdPayload {
    private Long studentId;
}

也可以看看:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法构造-杰克逊的实例

杰克逊抛出JsonMappingException无法构造实例

配置杰克逊以使用单参数构造函数

带有泛型JSON的杰克逊无法构造java.lang.Class的实例

无法在杰克逊中构造`javax.naming.Name`的实例

杰克逊JSON无法构造“关于”的实例:反序列化问题

杰克逊:如果有多个串行器,则使用哪一个?

杰克逊解串器委托给一个适用的解串器

如何将几个参数移动到杰克逊的另一个节点?

解析JSON使用杰克逊:我们可以在一个POJO可选变量

使用杰克逊从json数组中检索一个值

杰克逊解串器没有默认的(无ARG)构造

使用实例化的收集类型进行杰克逊反序列化,而不是初始化一个新的类型?

杰克逊ObjectMapper()构造函数抛出NoSuchMethod

杰克逊错误:没有合适的构造函数

如何让杰克逊忽略构造函数属性

@JsonCreator无法使用杰克逊识别

有关逗号杰克逊CSV解析器扼流圈分隔值的文件,如果“”是一个域,即使使用引号“

灿杰克逊反序列化使用它没写一个布尔JSON财产的具体subsclass?

基于另一个字段映射JSON字段(为一个值),使用杰克逊(这是一个键)

编写Java对象实例使用杰克逊YAML到

从Java实例化一个Scala类,并使用构造函数的默认参数

Axon使用无参数构造函数隐式实例化另一个聚合

捕获和处理异常杰克逊用一个自定义消息

映射一个JSON字符串与杰克逊对象将抛出MismatchedInputException

杰克逊-反序列化一个基本枚举

杰克逊在春季启动错误序列化一个ZonedDateTime

如何序列化一个列表的内容与杰克逊平坦JSON对象?

传递一个手动的内容创建的JSONObject杰克逊