私はSpring Boot 1.4を使用しています。私はこの@Bean
が定義されている:私は、要求の本文に以下のJSONで@RequestBody ReportRequest
とコントローラにこのデータを提出していSpringでジャクソンと日付を含む日付文字列を日付にマッピングする
public class ReportRequest implements Serializable {
private LocalDate startDate;
private LocalDate endDate;
// additional fields and getters/setters omitted
}
:
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
mapper.registerModule(new JodaModule());
return new MappingJackson2HttpMessageConverter(mapper);
}
そして、私はこのDTOが定義されている
{
"startDate": "2016-09-01",
"endDate": "2016-09-12"
}
素晴らしいです。しかし、私はまた時間を含める必要があります。だから私はこのようにすべてを変更しました:
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
private LocalDateTime startDate;
private LocalDateTime endDate;
{
"startDate": "2016-09-01 02:00:00",
"endDate": "2016-09-12 23:59:59"
}
これは動作しません。私は次のように変更:
Could not read document: Invalid format: \"2016-09-01 02:00:00\" is malformed at \" 02:00:00\" (through reference chain: com.hightouchinc.dto.ReportRequest[\"startDate\"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid format: \"2016-09-01 02:00:00\" is malformed at \" 02:00:00\" (through reference chain: com.hightouchinc.dto.ReportRequest[\"startDate\"])
更新:私は取得しています
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"));
そして"2016-09-01T02:00:00"
を送信することができ、それが動作します。しかし、両方からT
を削除することは壊れていきます。
これはいい考えですが、 'JacksonJodaDateFormat'はStringを受け入れません。私はそれを正しくラップする方法を決定しようとしているので、DateTimeFormatterが必要です。 – Gregg
そうです。 'DateTimeFormat.forPattern(" yyyy-MM-dd HH:mm:ss "); ' – jgm
の文字列から作成することはできます。' DateTimeFormat'はjava.textに由来し、 'JacksonJodaDateFormat'は同じ方法で動作しないjoda時間 'DateTimeFormatter' – Gregg