JSON-B десериализовывает строку даты в joda DateTime без изменения классов модели - PullRequest
0 голосов
/ 23 февраля 2019

Я работаю над десериализацией поля даты JSON во внешний класс модели.Запрос выглядит так:

{
  "name": "Bob",
  "lastName":"Bobertson",
  "date": "2019-03-12"
}

Вот код, который я использую для десериализации.Обратите внимание, что рассматриваемый класс является внешним, но соответствует входящему запросу.

import javax.json.bind.Jsonb;

private static Jsonb jsonb = JsonbBuilder.create();

public static External deserExternal(String jsonRQ) {
    return jsonb.fromJson(jsonRQ, External.class);
}

Вызов этого метода, как показано ниже, приводит к

javax.json.bind.JsonbException: Ошибка десериализации JSONзначение в тип: class org.joda.time.LocalDate

String jsonRQ= readFile("./path/to/file.json");
External externalRQ = deserExternal(jsonRQ);

Все решения, которые я нашел до сих пор, включают аннотирование моделей для учета типов joda, но у меня нет такой опции.Как я могу сделать это, редактируя только десериализатор, предпочтительно позволяя ему автоматически преобразовывать строки даты в joda DateTime по мере необходимости?

1 Ответ

0 голосов
/ 23 февраля 2019

Я знаю, что через JACKSON вы можете использовать что-то вроде

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.readValue(jsonRQ, External.class);

Зависимость Maven:

<dependency>
  <groupId>com.fasterxml.jackson.datatype</groupId>
  <artifactId>jackson-datatype-joda</artifactId>
  <version>2.1.1</version>
</dependency> 

Не уверен, что вы можете переключать библиотеки, хотя

...