我遇到的问题是这样的 同一个接口 根据不同的 type 返回的数据格式不同 当时想着用 object 去接 但是事与愿违 转换 josn gson默认将int型转换成double 下面说一下我的解决方法
{//type=1 时 公司数据只展示部分
"Favorite_Date": "今天",
"FavoriteList": [
{
"Footmark_ID": 20227,
"Comment_IsLike": 0
}
]
}
{//type=2 时
"Favorite_Date": "今天",
"FavoriteList": [
{
"Lab_Type": 1,
"Lab_AddDate": "2021-03-20 16:10",
"Lab_Like": 1,
"Lab_IsLike": 0
}
]
}
FootmarkBean {
private String Favorite_Date;
//private List<Object> FavoriteList;} 刚开始时这样写的
//这是解决后的 定义一个 map 如果你的 model 里还有model 可以这样写 Map<String, Object> 没测试过 不过应该可以
private List<Map<String, String>> FavoriteList;
public String getFavorite_Date() {
return Favorite_Date;
}
public void setFavorite_Date(String Favorite_Date) {
this.Favorite_Date = Favorite_Date;
}
public List<Map<String, String>> getFavoriteList() {
return FavoriteList;
}
public void setFavoriteList(List<Map<String, String>> FavoriteList) {
this.FavoriteList = FavoriteList;
}
public <T> List<T> getFavoriteList(Class<T> type) {
List<T> list = new ArrayList<>();
EventTransform<List<Map<String, String>>, List<T>> consumers = new EventTransform<List<Map<String, String>>, List<T>>() {
@Override
public List<T> transform(List<Map<String, String>> maps) {
List<T> beanList = new ArrayList<>();
for (Map<String, String> map : maps) {
//通过Gson 将map 转化为 json
String s = JsonUtil.toJson(map);
//定义泛型 通过 泛型转化为我们想要的数据格式
T modelBean = JsonUtil.fromJson(s, type);
beanList.add(modelBean);
}
return beanList;
}
};
return consumers.transform(getFavoriteList());
}
}