繁体   English   中英

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

[英]Gson how to dynamically set serialized name

这是我的情况

// 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM