Srping RestTemplate 將 Web 上的 JSON 數據快速本地實例化

在不少日常的數據收集和挖掘過程當中,咱們可能但願將網絡上的 JSON 數據庫快速獲取而且插入到本地數據庫中。html

一般方法就是將 JSON 數據下載,而後對 JSON 數據庫進行處理,而後保存。java

Spring 有沒有提供什麼快速的方法進行處理?git


其實 Spring 提供了一個 RestTemplate 能夠完成數據下載,而且進行在內存中進行對象的轉換。github

有關 RestTemplate 的 API ,你能夠參考 https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html 中的內容。web

這裏咱們使用的是 exchange 進行的轉換。spring

例如, 咱們但願將 https://covidtracking.com/api/v1/states/current.json 中的數據存入到咱們的本地數據庫中。數據庫

咱們就能夠使用提供的 exchange 方法。json

首先咱們須要定義:Covid19Current 對象,這個對象必要重要,首先這個對象是 JPA 的對象,同時這個對象也映射了 JSON 數據中的字段。api

若是你不但願這樣映射的話,那麼你須要進行字段的轉換。網絡

請參考 :https://github.com/ossez-com/covid-19/blob/master/covid-19-common/src/main/java/com/ossez/covid19/common/models/Covid19Current.java 文件中,咱們定義的字段內容。

而後你就能夠使用下面的代碼進行數據轉換和映射:

ResponseEntity<Covid19Current\[\]> responseEntity = restTemplate.exchange("https://covidtracking.com/api/v1/states/current.json",
            HttpMethod.GET,
            null,
            Covid19Current\[\].class);
    Covid19Current\[\] covid19Currents = responseEntity.getBody();

請注意,咱們這裏使用的 Get 方法,而後將數據轉換到對象 Array 中。

具體方法,請參考:https://github.com/ossez-com/covid-19/blob/master/covid-19-service/src/main/java/com/ossez/covid19/service/batch/tasklet/Covid19Tasklet.java

https://www.cwiki.us/display/SpringBootZH/questions/57939087

相關文章
相關標籤/搜索