爬一个小程序的数据,返回的是这样的结构:
{
"errno":0,
"message":"获取成功",
"data":{
"categories":[
{
"id":364,
"data":364,
"description":"",
"level":0,
"name":"第一天",
"pid":0,
"type":"surgery",
"childs":[
{
"id":365,
"data":365,
"description":"",
"level":1,
"name":"第一小时",
"pid":364,
"type":"surgery",
"childs":[
]
}
}]
}
}
说明:结果比这个复杂,但是比较常规的,JSON 大致结构:结果对象=》包含多个对象=> 每个对象包含数组=》数组里每个对象是父子嵌套
方法:
1. 采用的是hutool 工具类
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.8</version>
</dependency>
2.http结果对象转换:
UserServiceResult result = JSONUtil.toBean(re, UserServiceResult.class);
@Data
public class UserServiceResult<T>{
private Integer errno;
private String message;
private T data;
}
3. 解析出数组
JSONObject dataObj = JSONUtil.parseObj(result.getData());
Object o = dataObj.get("categories");
JSONArray objects = JSONUtil.parseArray(o);
4. 解析出想要的对象HsContentVo 为父子类
ArrayList<Object> arrayList = new ArrayList<>();
for (int i = 0; i < objects.size(); i++) {
HsContentVo vo1 = JSONUtil.toBean((JSONObject) objects.get(i), HsContentVo.class);
arrayList.add(vo1);
}
5. 成功获得想要的对象,入库 ,谢谢 ,鼓掌!