我有自定义对象类型的 MultivaluedMap,我正在使用 Gson 对其进行序列化。我的要求之一是根据字符串的长度将其中一个对象的名称更改为其他名称。
我知道我们可以使用注释@SerializedName,但它只提供一个名称替代选项,而我正在为同一属性寻找两个名称,并在基于字符串长度进行序列化时动态使用它。
我怎样才能做到这一点?
这是我的自定义对象类型的大纲:
顶级类:
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..
..
..
}
自定义文档类:
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<>();
Gather 所有必要的信息并将其添加到 MultivaluedMap 因为涉及重复键:
MultiValuedMap(<String, List<CompleteData>)
现在,在使用 Gson 序列化此对象时,我想更改 RecipientInfo 类中的“名称”属性,以便能够根据字符串长度动态更改为全名,如果长度为(>10 和 <15),如果长度为 fullNamewithSalu >20
我应该为这个小改动一起创建一个新类,还是有办法可以动态地使用 Gson 序列化这个对象?
请帮忙!
谢谢!