场景
- 远程数据传过来是LinkedHashMap或者Map,解析数据需要转对象再用泛型接收
LinkedHashMap转对象
把map转为实体对象时,需要结合fastjson来实现,方法如下:
LinkedHashMap<String,Object> hashMap = new LinkedHashMap<>();
hashMap.put("name", "小米");
hashMap.put("age", 30);
User user = JSON.parseObject(JSON.toJSONString(hashMap), User.class);
- 普通User实体
import lombok.Data;
@Data
public class User {
private String name;
private Integer age;
}
泛型接受
-
当User中包含List时,但是List中类型不确定时需要用泛型,List
-
泛型接收时需要改造一下
JSON.parseObjec
t第二个参数 -
带Listd的User实体
import lombok.Data;
@Data
public class User<T> {
private String name;
private Integer age;
private List<T> datas;
}
- 一个Phone实体
@Data
public class Phone {
private String name;
private Integer number;
}
- 使用带泛型User接受远程LinkedHashMap
//adata是一个LinkedHashMap
User<Phone> user = JSON.parseObject(JSON.toJSONString(adata),new TypeReference<User<Phone>>(){});//转对象
ArrayList<Phone> dataRows = data.getRows();
for(Phone phone : dataRows){
log.debug(phone.getNumber().toString());
}
A<B<C>> resultObj =JSON.parseObject("转换json",new TypeReference<A<B<C>>>(){});
- A为接收类型
- B为A的泛型类
- C为B的泛型类
https://www.cnblogs.com/zys2019/p/14100058.html
https://blog.youkuaiyun.com/u012012240/article/details/83015033