【发布时间】:2020-10-19 03:11:47
【问题描述】:
我正在使用 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)时,它按预期工作,尽管这个解决方案感觉很老套。
【问题讨论】:
标签: java json spring-boot jackson lombok