Gson如何动态设置序列化名称

时间:2015-06-01 06:19:18

标签: java json gson

这是我的案例

// a base class
public abstract class PageResult<T> {
   @SerializedName("success")
   public boolean success = false;
   @SerializedName("next_page")
   public int nextPage = -1;
   public ArrayList<T> dataList;
}
dataList SerializedName中的

需要是动态的,即

public class StringPageResult extends PageResult<String>{
  //for this case 
  @SerializedName("StringResult")
  public ArrayList<String> dataList
}

public class IntegerPageResult extends PageResult<Integer>{
  //for this case 
  @SerializedName("IntegerResult")
  public ArrayList<Integer> dataList
}

因此,扩展PageResult,SerializedName的类需要不同,并且所有必须使用dataList。意思是我需要使用PageResult dataList进行各种处理而不是子类dataList。是否可能? 我是按照以下方式做的

public abstract class PageResult<T> {
  public abstract ArrayList<T> getDataList();
  @SerializedName("success")
  public boolean success = false;
  @SerializedName("next_page")
  public int nextPage = -1;
}

public class StringPageResult extends PageResult<String>{

  @SerializedName("StringResult")
  public ArrayList<String> dataList;
  public abstract ArrayList<String> getDataList(){
     return dataList;
  }
}

1 个答案:

答案 0 :(得分:2)

使用此:

@SerializedName(value="name1", alternate={"name2", "name3"})

https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html