【发布时间】:2019-04-25 16:37:34
【问题描述】:
我想在 Dropwizard 应用程序的上下文中将 Java 8 java.time 与 Jersey/Jackson 一起使用。我知道我需要使用jackson-modules-java8 并配置映射器对象。
但是我该如何配置 Jersey 的自动映射器来为我反序列化传入的 JSON? IE。我该去哪里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;
}
}
如您所见,它使用较旧的 Date API。 Jersey 资源如下所示:
@Path("/example")
@Consumes(MediaType.APPLICATION_JSON)
public class ExampleResource {
@POST
public void consume(Example example) {
// Do stuff with example.date
}
}
【问题讨论】:
标签: json jackson jersey dropwizard