Spring Boot と 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でJacksonがこのように振る舞うのはなぜですか?
** アップデート **
これを解決するための完全なステップバイステップガイドを探している人のために、質問をした後にこれを見つけました: http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/