Динамическое изменение имени атрибута 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 динамически?

Пожалуйста помоги!

Спасибо!

0 ответов

Другие вопросы по тегам