Настройка картографа Джексона при использовании Dropwizard - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы использовать 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
  }
}

1 Ответ

0 голосов
/ 23 ноября 2018

JavaTimeModule - это , зарегистрированное по умолчанию в Dropwizard 1.0.0 и выше.В предыдущих версиях пакет dropwizard-java8 предоставлял поддержку функций Java 8.Java 8 - это базовая линия для Dropwizard 1.0.0, и пакет был объединен с базовой линией .

. Предполагается, что вы используете Dropwizard 1.0.0 или более позднюю версию, если вам все еще требуется доступ к * 1010.* Вы можете сделать это в вашем Application<T>:

  • в методе void initialize(Bootstrap<T> bootstrap), через bootstrap.getObjectMapper()
  • в методе abstract void run(T configuration, Environment environment), через environment.getObjectMapper()

Таким образом, вы можете зарегистрировать другие модули или включить или отключить функции Джексона.Некоторые из них влияют на сериализацию и десериализацию типов Java 8 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...