私はSpring BootとJettyで簡単なアプリケーションを持っています。私は単に持っているジャクソンは、SpringブートでZonedDateTimeを間違ってシリアル化します。
私RestController
で
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;
}
}
:
@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形式に従ってフォーマットされるように期待していた、私は、Java 8 ZonedDateTime
を持つオブジェクトを返す簡単なコントローラを持っています代わりに、私はこのようなクラスの全体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
を除きます。
なぜ、スプリングブートでジャクソンはこのように動作していますか?
** UPDATE質問をした後、私はこれを見つけたこれを解決する方法をステップガイドにより、フルステップをお探しの方に**
: http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/
感謝を。だから、 'jackson-datatype-jsr310'バージョン2.8.1の依存関係を追加しました。タイムスタンプがダブル" lastUpdated ":1471893818.177000000'に変更されました。 Springのブートでは、 'ObjectMapper'に直接アクセスすることはできません。' JavaTimeModule'を使う場所はどこですか? (私は少し春のブートに新しいです) – jbx
@jbxこの答えを確認する - http://stackoverflow.com/questions/7854030/configuring-objectmapper-in-springまた、あなたはdatetimeを変換するために 'WRITE_DATES_AS_TIMESTAMPS'機能をオフにする必要がありますISO-8601に – vsminkov
答えを見つけました。はい、 'spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false'だけで動作し、' ObjectMapper'をプログラムでカスタマイズする必要はありません。私の質問はSpringブートに関するものなので、答えを編集してこれを追加して正しい答えとして選ぶことができますか? – jbx