第三方接口返回结果示例如下:
{
"code": 200,
"message": "OK",
"data": {
"name" : "张三",
"age" : 21,
"profession" : "计算机专业"
}
}
我们可以用Object对象接收返回结果,然后object.get(“data”)获取data,如果想要data里的name属性,需要先把object.get(“data”)在转成Object对象,然后才能object.get(“data”).get(“name”),前后多次用到Object对象,可读性很低,所以建议直接把data里的结果封装成一个对象,这里我们可以定义一个Student对象
1:Student.java
@Data
public class Student{
private String name;
private Integer age;
private String profession;
}
2: 结果转换
Student student= JSONObject.parseObject(object.get("data").toString(), new TypeReference<Student >() {
});
或者:
Student student= JSONObject.parseObject(object.get("data").toString(), Student.class);
这样就封装好了,我们可以在用到的地方,直接Student对象.get方法获取对应属性,十分方便。
注意:我们自定义类里的属性名要跟接口返回结果一致,否则会映射转换失败。
比如:返回结果示例:
{
"code": 200,
"message": "OK",
"data": {
"stu_name" : "张三",
"age" : 21,
"profession" : "计算机专业"
}
}
类定义就应该是
@Data
public class Student{
private String stuName;
private Integer age;
private String profession;
}
小结:返回结果里的key是下划线形式命名,类里可以用驼峰式命名,其余情况下,类里的属性名称必须与返回结果里的key一样,否则映射失败,类里面的那个参数就一致是null.
在此基础上我们还可以继续封装。
比如接口返回示例:
{
"code": 200,
"message": "OK",
"data": {
"students" : [
{
"stu_name" : "张三",
"age" : 21,
"profession" : "计算机专业"
},
{
"stu_name" : "麻子",
"age" : 22,
"profession" : "计算机专业"
}
],
"area" : "安徽省"
}
}
这里我们可以先定义一个类
StudentDetail.java
@Data
public class StudentDetail{
private List<Student> students;
private String area;
}
这样就把接口返回结果封装好了,其中student参数是一个学生对象数组。
学会了这种方式,在复杂的结果也能封装的看起来一目了然。