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

标签 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;
  }
}

最佳答案

使用这个:

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

相关文章:

sql - 如何使用其字符串值对 JSON 数组进行排序?

java - 如何使用 Java (Bing-Search-API) 从 JSON 访问嵌套元素

java - @Async 正在终止 Hibernate 事务

Java:地址已被使用

java - 使用 SOAP WebService 与 Java 问题

java - 在 Java 中打印连接字符串时出现问题

java - 将 json 字符串转换为列表或 map

jquery - fullcalendar:使用 JSON feed 设置单个事件的颜色

java - Gson 自定义 byte[] 处理程序

java - 使用 Gson 从 Json 反序列化 Map