3

カスタムを作成せずに、Jacksonを使用DateTimeしてJodaオブジェクトをISO8601に[逆]シリアル化できるかどうかを知りたいです。StringJsonSerializer<DateTime>

確かに、これはライブラリのどこかに組み込まれている十分に一般的な関数ですか?私が見つけた最も近いものはですが、これはオブジェクトSerializationFeature.WRITE_DATES_AS_TIMESTAMPSにのみ当てはまるようです。Date

編集:

このクラスを見つけました:ISO8601DateFormat、しかし、次のコードを試してみると、ISO8601文字列が得られません:

ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new ISO8601DateFormat());
mapper.writer().writeValueAsString(DateTime.now());

JacksonはDateオブジェクトとDateTimeオブジェクトを同等に扱っていないようです。

アップデート:

最終的に、ISO8601DateTime文字列用のカスタムシリアライザーを作成しました。

4

1 に答える 1

2

私はそれを自分で試したことがありませんが、あなたはこれを行うことができるはずです

// Set the date format to the desired (in this case, ISO8601)
objectMapper.getDeserializationConfig().setDateFormat(myDateFormat);

// or, as of Jackson 1.8, use
ObjectMapper#withDateFormat(myDateFormat)

以来

バージョン1.4以降、JacksonはJoda Timeデータ型のサポートを提供します。基本的に、処理DateTime方法と同様に、自動的にシリアル化/逆シリアル化できますjava.util.Date

現在のAPI呼び出しは次のとおりです。

.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
于 2012-07-19T13:27:14.970 に答える