Динамическое изменение имени атрибута Gson при сериализации - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть 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 динамически?

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

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...