Json 使用Dropwizard时配置Jackson映射器

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;

我想在应用程序的上下文中与Jersey/Jackson一起使用。我知道我需要使用和配置映射器对象

但是我如何配置Jersey的automagic映射器来为我反序列化传入的JSON呢?例如,我将在哪里执行
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功能。其中一些影响很大