最近有个需求是从别人的接口拿数据然后存入数据库,话不多说直接上代码。
首先拿到别人的接口文档,看访问形式然后在postman上尝试访问能不能获取。
能获取后就在后端代码中实现
public String getJob(){
String s2 = "你的token";
String json = "{\"status\":1,\"startTime\":\"2021-03-11T16:51:24\",\"endTime\":\"2120-02-16T17:51:24\"}";
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("访问的接口地址");
StringEntity postingString = null;// json传递
try {
postingString = new StringEntity(json);
post.setEntity(postingString);
post.setHeader("Content-type", "application/json");
post.setHeader("Authorization", s2);
HttpResponse response = httpClient.execute(post);
String content = EntityUtils.toString(response.getEntity());
System.out.println(content);
result = content;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
然后的话就是如何把他放入数据库了,因为这样拿到的是一个json字符串,要进行解析才能存入,
我是这样进行的,可能不是最优的方法。
JobExample example = new JobExample();
jobMapper.deleteByExample(example);
//这个json就是上面获取的那个json字符串
String json = getJob();
//解析到最上层
JSONObject object = JSONObject.parseObject(json);
//解析到data层
JSONObject data = JSONObject.parseObject(JSON.toJSONString(object.get("data")));
//解析到items层
JSONArray items = JSONArray.parseArray(JSON.toJSONString(data.get("items")));
//然后就是遍历进数据库了
for (Object list : items) {
Job vo = new Job();
JSONObject item = JSON.parseObject(JSON.toJSONString(list));
if (item.size()!=0) {
//这是如果值是字符串型是这样解析获取
vo.setJobAdName(JSON.toJSONString(item.get("jobAdName")).replaceAll("\"", ""));
vo.setJobTitle(JSON.toJSONString(item.get("jobTitle")).replaceAll("\"", ""));
vo.setHeadCount(Integer.parseInt(String.valueOf(item.get("headCount")).replaceAll("\"", "")));
vo.setJobType(JSON.toJSONString(item.get("jobType")).replaceAll("\"", ""));
//这是整型的获取方式
vo.setKind(Integer.parseInt(String.valueOf(item.get("kind")).replaceAll("\"", "")));
}
为啥要解析多层是因为获取的数据是这样的
获取值的时候item.get("jobAdId")这个括号里面的必须跟上面的字段一样不然获取不到
分享就到这里了,欢迎大家评论点评。