疫情大数据平台,后台首要的任务是从各种渠道获得数据及对获取后的数据进行处理,本篇对外部接口的数据获取及处理进行记录。
主要使用的是RestTemplate类进行获取
创建及使用
在启动类中加入
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
在controller类中加入方法
ResponseEntity<String> responseEntity = restTemplate.getForEntity("https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5", String.class);
String body = responseEntity.getBody();
body,即是所需数据
项目中使用到的部分代码
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://api.tianapi.com/ncovabroad/index?key=d6a7ec52f2c40ea0ed4e23beda8ea571", String.class);
ResponseEntity<JSONObject> responseEntity = restTemplate.getForEntity("https://interface.sina.cn/news/wap/fymap2020_data.d.json", JSONObject.class);
对应返回的json数据量非常大,传输过程中非常耗时,需要进行简化,主要使用的就是fastjson来进行处理
Fastjson 特性
- 提供服务器端、安卓客户端两种解析工具,性能表现较好。
- 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
- 允许转换预先存在的无法修改的对象(只有class、无源代码)。
- Java泛型的广泛支持。
- 允许对象的自定义表示、允许自定义序列化类。
- 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>x.x.x</version>
</dependency>
JSON转换
@Test
public void whenJavaList_thanConvertToJsonCorrect() {
String jsonOutput= JSON.toJSONString(对象);
}
项目中后台的部分处理代码:
JSONObject jsonObject1 = responseEntity.getBody();
JSONObject jsonObject2 = jsonObject1.getJSONObject("data");
JSONArray jsonArray = jsonObject2.getJSONArray("list")</