序列化时动态更改属性名称Gson

时间:2018-11-01 10:15:33

标签: java json gson java-custom-serialization

我有自定义对象类型的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..
..
..
}

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序列化此对象时,我想更改RecipientInfo类中的“ name”属性,以便能够根据字符串长度(如长度为> 10和<15)和fullNamewithSalu作为全名来动态更改如果长度> 20

我应该为这个小的变化一起创建一个新的类吗,还是有一种方法可以动态地使用Gson序列化该对象?

请帮助!

谢谢!

0 个答案:

没有答案