@MiserableVariableが指摘しているように、Jacksonは(ほとんどの)日付フィールドをデフォルトで(数値の長い)タイムスタンプとしてシリアル化します。この動作は、さまざまな方法でオーバーライドできます。
ObjectMapperの独自のインスタンスを使用する場合は、プロパティをオーバーライドして、日付をISO-8601として書き込みます。
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
ObjectMapperの独自のインスタンスを使用する場合、独自のカスタム形式で日付を書き込むには、次のようにします。
objectMapper.setDateFormat(myDateFormat); // 1.8 and above
objectMapper.getSerializationConfig().setDateFormat(myDateFormat); // for earlier versions (deprecated for 1.8+)
ほとんどのフィールドでデフォルトのシリアル化動作を残し、特定のオブジェクトの特定のフィールドでオーバーライドするには、カスタムシリアライザーを使用します。
public class MyBean implements Serializable {
private Date postDate;
// ... constructors, etc
@JsonSerialize(using = MyCustomDateSerializer.class)
public Date getPostDate() {
return postDate;
}
}
public class MyCustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(final Date date, final JsonGeneraror generator,
final SerializerProvider provider) throws IOException,
JSONProcessingException {
generator.writeString(yourRepresentationHere);
}
}
この情報はすべてJacksonのドキュメントで入手でき、その大部分は日付の処理を扱うセクションにあります。