Please see。 The version:Spring Boot 2.0.5.RELEASE
request url: http://localhost:8081/api/dateList response result:[1626020430.170000000]
why not yyyy-MM-dd HH:mm:ss format?
@RestController
@RequestMapping("/api")
public class ApiController {
@RequestMapping(value = "/dateList")
public List<Object> dateList(){
List<Object> objects = new ArrayList<>();
objects.add(Instant.now());
return objects;
}
}
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer{
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
JacksonInstantSerializer jacksonInstantSerializer = new JacksonInstantSerializer();
JacksonInstantDeserializer jacksonInstantDeserializer = new JacksonInstantDeserializer();
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
.serializerByType(Instant.class, jacksonInstantSerializer)
.deserializerByType(Instant.class,jacksonInstantDeserializer)
.serializationInclusion(JsonInclude.Include.NON_NULL);
converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
/*
for (HttpMessageConverter converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter =
(MappingJackson2HttpMessageConverter) converter;
ObjectMapper returnObjectMapper = mappingJackson2HttpMessageConverter.getObjectMapper();
// ObjectMapper returnObjectMapper = objectMapper;
mappingJackson2HttpMessageConverter.setObjectMapper(returnObjectMapper);
JacksonInstantSerializer jacksonInstantSerializer = new JacksonInstantSerializer();
JacksonInstantDeserializer jacksonInstantDeserializer = new JacksonInstantDeserializer();
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(Instant.class, jacksonInstantSerializer);
javaTimeModule.addDeserializer(Instant.class, jacksonInstantDeserializer);
returnObjectMapper
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.registerModule(javaTimeModule);
}
}
*/
}
}
class JacksonInstantSerializer extends JsonSerializer<Instant> {
@Override
public void serialize(Instant instant, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of(ZoneId.SHORT_IDS.get("CST")));
LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
String str = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(localDateTime);
jsonGenerator.writeString(str);
}
}
class JacksonInstantDeserializer extends JsonDeserializer<Instant> {
@Override
public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
String text = jsonParser.getText();
Long aLong = Long.valueOf(text);
Instant res = Instant.ofEpochMilli(aLong);
return res;
}
}
Comment From: snicoll
Thanks for getting in touch, but it feels like this is a question that would be better suited to Stack Overflow. As mentioned in the guidelines for contributing, we prefer to use GitHub issues only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add some more details if you feel this is a genuine bug.