Универсальный gson для разного формата дат

229
15 октября 2017, 21:20

У меня есть класс, в котором есть поля LocalDate (yyyy-mm-dd) и в тоже время поля LocalDateTime (формата: "2011-12-03T10:15:30+01:00").
(т.е. ISO_LOCAL_DATE и ISO_OFFSET_DATE_TIME, если так понятнее)

Все решения, что я находил предлагают задать один из типов форматирования перед десериализацией. Но десериализация у меня происходит в обобщённом методе, где полученный json сразу форматируется в объект нужного типа строкой типа:
new Gson().fromJson(response.getBody(), type);, где Class <T> type.

Полный пример метода:

public static <T> T get(String url, Class<T> type){
    try {
        HttpResponse<String> response = Unirest
                .get(ShikiConst.ROOT_API + url)
                .header("User-Agent", Client.getUserAgent())
                .asString();
        if (response.getStatus() != 200){
            ErrorStack.PushServerError(ShikiConst.ROOT_API + url, response.getStatus(), response.getStatusText());
            return null;
        }
        return new Gson().fromJson(response.getBody(), type); //ТА САМАЯ СТРОКА
    }
    catch (UnirestException | JsonSyntaxException ex){
        System.out.println(ex.getMessage());
        ErrorStack.PushLocalError("QueryShell.get()", ex.getMessage());
        return null;
    }
}

Поэтому хотелось бы как-то один раз задать gson, чтобы он мог распознать нужный формат и присвоить соответствующим полям в классе.

READ ALSO
Хранение документов в elasticsearch

Хранение документов в elasticsearch

Начал смотреть в организацию удобного поиска в каталоге документов, выбор остановил на elasticsearch как поисковый движок и клиент для загрузки/поиска/вывода...

427
Как брать данные понемногу?

Как брать данные понемногу?

Есть сервис и при обращении к нему он возвращает ответ обьемом 20+мб и я парсю эти данныеНо вот беда если вдруг сеть оборвется я он загрузил...

276
В каком формате получать данные на сервере JAVA

В каком формате получать данные на сервере JAVA

Здравствуйте! Подскажите пожалуйстаНужно сделать сервер со Spring'ом

228
Будет ли неопределенный порядок, если LinkedHashMap перевести в ArrayList?

Будет ли неопределенный порядок, если LinkedHashMap перевести в ArrayList?

LinkedHashMap не знает ничего про индексациюА если я переведу его в ArrayList так:

192