Fastjson 泛型 json 转 对象
通过泛型,将具有相同规律的json串,解析为同一个对象。
1、查询Student对象返回的json串:
{
"status":200,
"data":[
{
"studentId":"1",
"name":"tom",
"age":18,
"className":"07计本1班"
},
{
"studentId":"2",
"name":"jim",
"age":28,
"className":"07网工1班"
}
],
"message":"查询成功"
}
查询Teacher返回的json串。
{
"status":200,
"data":[
{
"teacherId":"1",
"name":"Lisa",
"age":38
},
{
"teacherId":"2",
"name":"ShaLi",
"age":34
}
],
"message":"查询成功"
}
2、构建实体类:
student类:
(@Data是Lombok插件的注解)
@Data
public class Student {
private String studentId;
private String name;
private Integer age;
private String className;
}
teacher类:
@Data
public class Teacher {
private String teacherId;
private String name;
private Integer age;
}
3、构建泛型类: ResultObject
@Data
public class ResultObject<T> {
private Integer status;
private List<T> data;
private String message;
}
4、写个测试类:
public class ParseTest {
public static void main(String[] args) {
parseStudent();
parseTeacher();
}
private static void parseStudent() {
String studentJson=" {\n" +
" \"status\":200,\n" +
" \"data\":[\n" +
" {\n" +
" \"studentId\":\"1\",\n" +
" \"name\":\"tom\",\n" +
" \"age\":18,\n" +
" \"className\":\"07计本1班\"\n" +
" },\n" +
" {\n" +
" \"studentId\":\"2\",\n" +
" \"name\":\"jim\",\n" +
" \"age\":28,\n" +
" \"className\":\"07网工1班\"\n" +
" }\n" +
" ],\n" +
" \"message\":\"查询成功\"\n" +
" }";
ResultObject<Student> resultObject = JSON.parseObject(studentJson,new TypeReference<ResultObject<Student>>(){});
Integer status = resultObject.getStatus();
String message = resultObject.getMessage();
List<Student> list = resultObject.getData();
System.out.println(status+"|"+message+"|"+list);
}
private static void parseTeacher() {
String teacherJson="{\n" +
" \"status\":200,\n" +
" \"data\":[\n" +
" {\n" +
" \"teacherId\":\"1\",\n" +
" \"name\":\"Lisa\",\n" +
" \"age\":38\n" +
" },\n" +
" {\n" +
" \"teacherId\":\"2\",\n" +
" \"name\":\"ShaLi\",\n" +
" \"age\":34\n" +
" }\n" +
" ],\n" +
" \"message\":\"查询成功\"\n" +
" }";
ResultObject<Teacher> resultObject = JSON.parseObject(teacherJson,new TypeReference<ResultObject<Teacher>>(){});
Integer status = resultObject.getStatus();
String message = resultObject.getMessage();
List<Teacher> list = resultObject.getData();
System.out.println(status+"|"+message+"|"+list);
}
}
5、测试结果:
200|查询成功|[Student(studentId=1, name=tom, age=18, className=07计本1班), Student(studentId=2, name=jim, age=28, className=07网工1班)]
200|查询成功|[Teacher(teacherId=1, name=Lisa, age=38), Teacher(teacherId=2, name=ShaLi, age=34)]