Json 使用Dropwizard时配置Jackson映射器
我想在应用程序的上下文中与Jersey/Jackson一起使用。我知道我需要使用和配置映射器对象 但是我如何配置Jersey的automagic映射器来为我反序列化传入的JSON呢?例如,我将在哪里执行Json 使用Dropwizard时配置Jackson映射器,json,jackson,jersey,dropwizard,Json,Jackson,Jersey,Dropwizard,我想在应用程序的上下文中与Jersey/Jackson一起使用。我知道我需要使用和配置映射器对象 但是我如何配置Jersey的automagic映射器来为我反序列化传入的JSON呢?例如,我将在哪里执行mapper.registerModule(新的JavaTimeModule()) 为了说明当前情况,这里有一个代表传入JSON的示例类: public class Example { // Want to use java.time instead private Date date;
mapper.registerModule(新的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。泽西岛资源如下所示:
@Path("/example")
@Consumes(MediaType.APPLICATION_JSON)
public class ExampleResource {
@POST
public void consume(Example example) {
// Do stuff with example.date
}
}
JavaTimeModule
位于Dropwizard 1.0.0及更高版本中。对于以前的版本,捆绑包提供了对Java8特性的支持。Java8是Dropwizard 1.0.0的基线,捆绑包是
假设您使用Dropwizard 1.0.0或更高版本,如果您仍然需要访问ObjectMapper
,则可以在应用程序中执行此操作:
- 在方法
void initialize(引导引导引导引导)
中,通过Bootstrap.getObjectMapper()
- 在方法
中,通过Environment.getObjectMapper()
这样,您就可以注册其他模块,或者启用或禁用Jackson功能。其中一些影响很大