Я пытаюсь сериализовать (используя Gson) POJO и провести специальную обработку для одного из его полей.
Возможно ли сделать это более простым способом, чем кодирование адаптера, реализующего JsonSerializer
и имеющего метод serialize()
, для копирования всех полей, кроме указанного c, которое получает специальную обработку?
Можно ли сделать это, используя аннотации в моем POJO?
Я также не могу просто написать адаптер типа поля спецификаций c, так как это java.util.Date
, и я не хочу, чтобы каждая сериализованная Дата получала эту обработку.
Вот иллюстрация:
public class Pojo {
@SerializedName("effectiveDate")
private final Date mDate;
@SerializedName("status")
private final Status mStatus; // <-- The field needing specific serialization
@SerializedName("details")
private final String mDetails;
// other fields
// methods
}
Я хотел бы избежать кодирования адаптера как такового:
public class PojoAdapter implements JsonSerializer<Pojo> {
@Override
public JsonElement serialize(final Pojo src, final Type typeOfSrc, final JsonSerializationContext context) {
final JsonObject jsonPojo = new JsonObject();
jsonDeployment.add("effectiveDate", /* special treatment */);
jsonDeployment.add("status", src.getStatus());
jsonDeployment.add("details", src.getDetails());
// other fields setting
return jsonPojo;
}
}