Я хотел бы использовать Java 8 java.time с Джерси / Джексоном в контексте Dropwizard приложения.Я понимаю, что мне нужно использовать jackson-modules-java8 и настроить объект сопоставления.
Но как мне настроить автоматический преобразователь Джерси, который десериализует входящий JSON для меня?Т.е. где бы я делал mapper.registerModule(new JavaTimeModule());
?
Чтобы проиллюстрировать текущую ситуацию, приведу пример класса, который представляет входящий JSON:
public class Example {
// Want to use java.time instead
private Date date;
private final String ISO_OFFSET_DATE_TIME = "YYYY-MM-DD'T'HH:mm:ssZ";
@JsonCreator
public Example(@JsonProperty("date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = ISO_OFFSET_DATE_TIME)
Date date) {
this.date = date;
}
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = ISO_OFFSET_DATE_TIME)
public Date getDate() {
return date;
}
}
Как вы можете видеть, он использует более старый API Date,Ресурсы Джерси выглядят следующим образом:
@Path("/example")
@Consumes(MediaType.APPLICATION_JSON)
public class ExampleResource {
@POST
public void consume(Example example) {
// Do stuff with example.date
}
}