【发布时间】:2019-02-01 10:40:02
【问题描述】:
我的问题很简单,我有一个 spring boot 控制器,它可以像这样接收一组对象:
@RequestMapping(value = "/contracts/{id}/milestones", method = RequestMethod.PUT, headers = "Accept=application/json")
@ResponseBody
@Transactional
public ResponseEntity<?> updateContractMilestones(@PathVariable("id") String contractId,
@DTO(MilestoneUpdateStateDto.class) List<Milestone> milestones,UriComponentsBuilder uriComponentsBuilder, final HttpServletRequest request) {
}
但是当我发送以下 Json 对象时:
[{"id":18,"state":"FINALIZED"},{"id":19,"state":"FINALIZED"}]
我收到以下错误:
读取 HTTP 消息失败: org.springframework.http.converter.HttpMessageNotReadableException: JSON 解析错误:无法反序列化
com.espiritware.opusclick.dto.MilestoneUpdateStateDto出 START_ARRAY 令牌;嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:不能 反序列化实例com.espiritware.opusclick.dto.MilestoneUpdateStateDto出 START_ARRAY 令牌
我的问题是我应该从后端做些什么才能正确接收这个对象?
非常感谢!
【问题讨论】:
-
能否指定
@DTO注解的全名? -
Spring Boot 中没有
DTO注释。您可能正在使用 auth0.com/blog/… 中描述的方法。在这种情况下,您需要调整DTOModelMapper以便它也可以与列表一起使用。 -
JSON 应该以
{开头并以}结尾 -
@RomanKonoval 如何调整 DTOModelMapper 以处理列表?非常感谢!
标签: java json spring spring-boot