Динамическое изменение имени атрибута Gson при сериализации
У меня есть MultivaluedMap пользовательских типов объектов, которые я сериализую с помощью Gson. Одно из моих требований - изменить имя одного объекта на основе длины строки на другое имя.
Я знаю, что мы можем использовать аннотации @SerializedName, но она предоставляет опцию только для одной альтернативы имени, тогда как я ищу два имени для одного и того же атрибута и использую его динамически при сериализации на основе длины строки.
Как я могу сделать это?
Вот схема моих пользовательских типов объектов:
Toplevel Class:
public class CompleteData{
private String country,
private String appId,
Private String userId,
private List<RecipientInfo> recipients;
private CustomDocument document;
<<setters//getters>>
public CompleteData(String country, String appId, String userId, List<RecipientInfo> recipients, CustomDocument document){
this.country=country..
..
..
}
Класс CustomDocument:
public class CustomDocument{
String name;
String pageCount;
public CustomDocument(String name, int pageCount){
this.name = name;
this.pageCount = pageCount;
}
Класс RecipientInfo:
public class RecipientInfo{
@serializedName("fullName")
String name;
String phoneNum;
public RecipientInfo(String name, String phoneNum){
this.name = name;
this.phoneNum = phoneNum;
}
}
Теперь я создаю List<CompleteData> completeData = new ArrayList<>();
Соберите всю необходимую информацию и добавьте ее в MultivaluedMap, так как задействованы дубликаты ключей:
MultiValuedMap(<String, List<CompleteData>)
Теперь, используя Gson для сериализации этого объекта, я хочу изменить атрибут "name" в классе RecipientInfo, чтобы иметь возможность динамического изменения на основе длины строки как полного имени, если длина (>10 и <15), и fullNamewithSalu, если длина >20
Должен ли я создать новый класс все вместе для этого небольшого изменения или есть способ, которым я могу сериализовать этот объект, используя Gson динамически?
Пожалуйста помоги!
Спасибо!