У меня есть MultivaluedMap пользовательских типов объектов, которые я сериализую с помощью Gson. Одно из моих требований - изменить имя одного из объектов в зависимости от длины строки на другое имя.
Я знаю, что мы можем использовать аннотации @SerializedName, но он предоставляет опцию только для одной альтернативы имени, тогда как я ищу два имени для одного и того же атрибута и использую его динамически при сериализации на основе длины строки.
Как мне это сделать?
Вот схема моих пользовательских типов объектов:
Toplevel Класс:
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 динамически?
Пожалуйста, помогите!
Спасибо!