将jsondatetime字段在json中发送到java restful webservice

时间:2017-11-04 07:18:31

标签: java json rest spring-mvc

我有一个将数据存储在数据库中的休息服务。在我的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的对象,我该如何克服这个问题?

1 个答案:

答案 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