我们的班级很多:
class Foo {
// ... many fields
@Expose
@JsonAdapter(DateAdapter.class)
Date start;
@Expose
String startTimeZone;
// ... more fields
}
现在,在本地将start的值存储为UTC,并将时区信息分别存储在startTimeZone中。但是,将数据发送到服务器时,我们需要将开始转换为startTimeZone ,并将其格式化为字符串“ YYYY-mm-dd HH:mm:ss”。
我们有这个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字段,因此我们无法将其用于格式化/解析。
我知道我们可以为整个类编写一个自定义适配器,但是如上所述,该类很大,所以我宁愿有其他解决方案。