У меня есть класс, в котором есть поля 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, чтобы он мог распознать нужный формат и присвоить соответствующим полям в классе.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости