У меня есть простое приложение с Spring Boot and Jetty. У меня есть простой контроллер, возвращающий объект с Java 8 ZonedDateTime
:
public class Device {
// ...
private ZonedDateTime lastUpdated;
public Device(String id, ZonedDateTime lastUpdated, int course, double latitude, double longitude) {
// ...
this.lastUpdated = lastUpdated;
// ...
}
public ZonedDateTime getLastUpdated() {
return lastUpdated;
}
}
В моем RestController
я просто:
@RequestMapping("/devices/")
public @ResponseBody List<Device> index() {
List<Device> devices = new ArrayList<>();
devices.add(new Device("321421521", ZonedDateTime.now(), 0, 39.89011333, 24.438176666));
return devices;
}
Я ожидал, что формат ZonedDateTime
будет отформатирован в соответствии с ISO-форматом, но вместо этого я получаю весь дамп JSON класса следующим образом:
"lastUpdated":{"offset":{"totalSeconds":7200,"id":"+02:00","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]}},"zone":{"id":"Europe/Berlin","rules":{"fixedOffset":false,"transitionRules":[{"month":"MARCH","timeDefinition":"UTC","standardOffset":{"totalSeconds":3600,"id":"+01:00","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]}},"offsetBefore":{"totalSeconds":3600,"id":"+01:00","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]}},"offsetAfter":{"totalSeconds":7200,"id":"+02:00", ...
У меня просто есть приложение spring-boot-starter-web
, используя spring-boot-starter-jetty
и исключая spring-boot-starter-tomcat
.
Почему Джексон ведет себя так в Spring Boot?
** ОБНОВЛЕНИЕ **
Для тех, кто ищет полное пошаговое руководство, как это решить, я нашел это, задав вопрос: http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/