这是我的案例
// 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;
}
}
最佳答案
使用这个:
@SerializedName(value="name1", alternate={"name2", "name3"})
https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html
关于java - Gson如何动态设置序列化名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566832/