我有一个将数据存储在数据库中的休息服务。在我的DTO对象中,我有一个类型为的DOB字段: 私人 ZonedDateTime dateOfBirth;
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> createStudent(@Valid @RequestBody StudentDTO studentDto) {
//I have some more fields in StudentDTO along with dob field.
}
我收到JsonMappingException(Index cannot be parsed)
当我从邮递员发送有价值的请求时:
dateOfBirth":"2017-10-01T01:00
问题:如何将日期时间格式转换为所需格式? 如果我必须转换代码,我应该在哪里写?因为当我从邮递员发送请求时,数据会自动绑定到使用@RequestBody.So的对象,我该如何克服这个问题?
答案 0 :(得分:1)
您收到此错误是因为您使用了错误的日期格式。
2017-10-01T01:00
不适合ZonedDateTime
,因为它没有偏移部分。
正确的表示必须有偏移量,例如:2017-10-01T01:00+02:00
,下一个代码可以正常工作:
ZonedDateTime.parse("2017-10-01T01:00+02:00")
同时2017-10-01T01:00
可以由LocalDateTime
表示,下一个语句将完成且没有错误:
LocalDateTime.parse("2017-10-01T01:00")
注意:您不必编写自己的反序列化程序,已经实现了永久化,只需使用jackson-datatype-jsr310
。