2016-10-19 5 views
0

Instantフィールドをシリアル化しようとすると、Jackson 2.8.3とjava 8を使用すると、ミリ秒ではなく秒としてシリアル化されているようです。Jacksonを使用してインスタントをミリ秒単位でシリアル化しますか?

これは、ジャクソンがDateをシリアル化する方法とは異なり、ミリ秒単位でシリアル化されます。しかし、インスタントは数分でシリアル化されます。

私はこれをどのように変更できますか?また、Jacksonがunix epoch millisecondsのインスタントをシリアル化するようにするにはどうすればよいですか?

私は次のことをやっている:

mapper.enable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);     
mapper.enable(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS);    
mapper.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS); 

しかし、それは何の効果も持っていません。

+0

jackson-datatype-jdk8依存関係を使用していますか? b/cこの依存関係には、Java 8のタイムクラスのためのセーラライザ/デラウェアが含まれています。 – Veeram

+0

@Veeramいいえ、瞬時にデシリアライズしているようですが、わずか数秒です。その依存関係はミリ秒に変わるでしょうか? –

+0

はい、そうですが、write_dates_as_timestampsのみが有効になっていることを確認してください。 – Veeram

答えて

1

私はこのhttp://stackoverflow.com/questions/41471890/java-instant-is-not-getting-serialized-as-milliseconds-using-jackson

で同じ問題を見ていた私は自分のコードで以下の行を追加しています。

objectMapper.registerModule(new JavaTimeModule()); 

この行のように見えます - > staticMaper.findAndRegisterModules();期待どおりに動作しません。

関連する問題