У нас довольно большой класс:
class Foo {
// ... many fields
@Expose
@JsonAdapter(DateAdapter.class)
Date start;
@Expose
String startTimeZone;
// ... more fields
}
Теперь локально значения запуска сохраняются как UTC, а информация о часовом поясе хранится отдельно в startTimeZone. Однако при отправке данных на сервер нам нужно преобразовать начало в startTimeZone и отформатировать его в строку «ГГГГ-мм-дд ЧЧ: мм: сс».
У нас есть класс DateAdpater
public class DateAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> {
@Override
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
return DateUtils.parseServerDateTime(json.getAsString);
}
@Override
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(DateUtils.formatServerDateTime(src));
}
}
Однако в DateAdapter у нас нет доступа к полю startTimeZone, поэтому мы не можем использовать его для форматирования / синтаксического анализа.
Я знаю, что мы могли бы написать собственный адаптер для всего класса, но, как уже было сказано, класс довольно большой, поэтому я бы предпочел другое решение.