接口json参数形式:
{
"code": "200",
"data": {
"bz": "",
"fxjg": [
{
"abcd": [
"/1/1.mp4",
"/1/2.mp4",
"/1/3.mp4",
"/1/4.mp4",
"/1/5.mp4"
]
},
{
"efgh": []
}
],
"zhuj": "202204220000000001",
"ertf": 5,
},
"message": "识别成功",
"qqshu": 4465765,
"signature": "周杰伦"
}
如上,是调用第三方接口后返回来的json数据,以上数据形式如下分析:
①数据的整体(最外层的大括号)可以封装成一个大的DTO用来接收调用接口成功后返回来的数据。DTO包含的成员变量就是大括号中的各项,如下:
@Data
@Accessors(chain = true)
public class GetParamterDTO implements Serializable {
private String code;
private String message;
private ProjectVideoDto data;
private Long qqshu;
private String signature;
}
②实体中又包含实体:可以看到,大参数实体中,又包含了一个小的实体data,所以此时需要继续创建一个实体来承接data并把这个实体封装到大实体GetParamterDTO中:
@Data
@Accessors(chain = true)
public class ProjectVideoDto implements Serializable {
private String bz;
private String zhuj;
private String ertf;
private List<Map<String, List>> fxjg;
}
注意:①无论是调用接口传参还是接收接口返回的数据,起的变量名一定要和参数中的Key值保持一致
②注意data参数中的fxjg,在返回的参数data中,他的格式是这样的:
"fxjg": [
{
"abcd": [
"/1/1.jpg",
"/1/2.jpg",
"/1/3.jpg",
"/1/4.jpg",
"/1/5.jpg"
]
},
{
"efgh": []
}
],
在实体类中的类型定义是:
private List<Map<String, List>> fxjg;
如下图所示,方括号代表数组,在Java中则用List表示,数组中的每个元素是json格式的数据,即Map形式,而Map中,key是字符串,value又是一个数组,所以最后的实体类定义形式如上所示。
|