英文:
Error in parsing my Json input containing Instant Date type
问题
Caused by: org.springframework.http.converter.HttpMessageNotReadableException: 无效的JSON输入:无法从字符串“2019-07-22 08:09:45”反序列化为类型`java.time.Instant`:无法反序列化java.time.Instant:(java.time.format.DateTimeParseException) 在索引10处无法解析文本'2019-07-22 08:09:45';嵌套异常是com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串“2019-07-22 08:09:45”反序列化为类型`java.time.Instant`:无法反序列化java.time.Instant:(java.time.format.DateTimeParseException) 在索引10处无法解析文本'2019-07-22 08:09:45'
返回的Json如下:
{
"job":"Foo",
"time":"2020-02-12 18:33:23"
}
我正在使用RestTemplate调用其他服务,但每次都会出现上述异常,显示日期错误。我已经尝试为RestTemplate
配置ObjectMapper
,但问题仍然存在。
以下是我用于配置RestTemplate的代码片段:
@Bean
public RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(0, createMappingJacksonHttpMessageConverter());
return restTemplate;
}
@Bean
public ObjectMapper createObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.setDateFormat(df);
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
@Bean
public MappingJackson2HttpMessageConverter createMappingJacksonHttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(createObjectMapper());
return converter;
}
附:Pojo结构(由于POJO位于公共部分,因此无法编辑)。
String job;
Instant executionTime;
英文:
Caused by: org.springframework.http.converter.HttpMessageNotReadableException: Invalid JSON input: Cannot deserialize value of type `java.time.Instant` from String "2019-07-22 08:09:45": Failed to deserialize java.time.Instant: (java.time.format.DateTimeParseException) Text '2019-07-22 08:09:45' could not be parsed at index 10; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.Instant` from String "2019-07-22 08:09:45": Failed to deserialize java.time.Instant: (java.time.format.DateTimeParseException) Text '2019-07-22 08:09:45' could not be parsed at index 10
The Json being returned is
{
"job":"Foo",
"time":"2020-02-12 18:33:23"
}
I am using RestTemplate to call some other service, but every time the above exception pops up giving Date error. I have tried configuring ObjectMapper
for RestTemplate
but still the same issue.
Below is the code snippet I am using to configure RestTemplate.
@Bean
public RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(0, createMappingJacksonHttpMessageConverter());
return restTemplate;
}
@Bean
public ObjectMapper createObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
final DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.setDateFormat(df);
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}
@Bean
public MappingJackson2HttpMessageConverter createMappingJacksonHttpMessageConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(createObjectMapper());
return converter;
}
PS : Pojo Structure (Can't edit for this use case as POJO's are in commons).
String job;
Instant executionTime;
专注分享java语言的经验与见解,让所有开发者获益!
评论