一、泛型实体
这里主要目的是返回一个通用的结果集
@Data
public class ResultRespDto<T> {
/**
* 返回结果值
*/
private ResultRespDataDto<T> data;
/**
* 返回状态码
*/
private String ret_code;
/**
* 返回消息
*/
private String ret_msg;
}
@Data
public class ResultRespDataDto<T> {
private List<T> data;
}
二、带转化的泛型对象(后期可以自定义)
@Data
public class Student{
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private String age;
/**
* 学校
*/
private String school;
}
三、带泛型的List转化
//数据源{"data":{"data":[{"name":"mark","age":"12","school":"csu"},{"name":"mario","age":"14","school":"just"}]},"ret_code":"00000000","ret_msg":""}
String jsonStr = "{\"data\":{\"data\":[{\"name\":\"mark\",\"age\":\"12\",\"school\":\"csu\"},{\"name\":\"mario\",\"age\":\"14\",\"school\":\"just\"}]},\"ret_code\":\"00000000\",\"ret_msg\":\"\"}";
Gson gson = new Gson();
ResultRespDto resultRespDtos = gson.fromJson(jsonStr, new TypeToken<ResultRespDto<Student>>(){}.getType());
执行结果
// 结果:
data:
// 0 Student [name=mark, age=12, school=csu]
// 1 Student [name=mario, age=14, school=just]ret_code:00000000
ret_msg:"返回成功"
核心方法--指定带泛型的type
gson.fromJson(jsonStr, new TypeToken<ResultRespDto<Student>>(){}.getType());
四、纯数组映射
JSON串为
[ {
"name":"mark","age":15,"school":"csu"
}, {
"name":"mark","age":10,"school":"just"
}]
Type listType = new TypeToken<LinkedList<Student>>(){}.getType(); List<Student> listCloudConfigs = gson.fromJson(resultJson, listType);