通過JAVA從接口獲取json數據 解析並存入數據庫的程序實例


1.java代碼,結構如下入

 

1.pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>tcl.ln.geturl</groupId>
<artifactId>geturl</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<!--map和json數據交換轉換-->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>

<!--mysql驅動jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
</dependencies>
<!--Spring Boot可以以jar包的形式獨立運行。指定運行主類 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>geturl.Iputil</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>


</project>

2. 通過此數據建立實體類

 

 

package geturl;


import java.util.List;

public class JsonBean {
private String status;
private String msg;
// 封裝data的數據
private DataBean data;

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public DataBean getData() {
return data;
}

public void setData(DataBean data) {
this.data = data;
}

//Data數據封裝
public static class DataBean {
private Integer totalSize;
private Integer hasNext;
// 封裝tuples的數據
private List<TuplesBean> list;


public Integer getTotalSize() {
return totalSize;
}

public void setTotalSize(Integer totalSize) {
this.totalSize = totalSize;
}

public Integer getHasNext() {
return hasNext;
}

public void setHasNext(Integer hasNext) {
this.hasNext = hasNext;
}

public List<TuplesBean> getList() {
return list;
}

public void setList(List<TuplesBean> list) {
this.list = list;
}
}
//Tuples數據封裝
public static class TuplesBean {
private String id;
private String sn;
private String activationCode;
private String source;
private String phoneNum;
private String ip;
private String status;
private String obtainTime;
private String synTime;

public TuplesBean() {
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getSn() {
return sn;
}

public void setSn(String sn) {
this.sn = sn;
}

public String getActivationCode() {
return activationCode;
}

public void setActivationCode(String activationCode) {
this.activationCode = activationCode;
}


public String getSource() {
return source;
}

public void setSource(String source) {
this.source = source;
}

public String getIp() {
return ip;
}

public void setIp(String ip) {
this.ip = ip;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public String getObtainTime() {
return obtainTime;
}

public void setObtainTime(String obtainTime) {
this.obtainTime = obtainTime;
}

public String getSynTime() {
return synTime;
}

public void setSynTime(String synTime) {
this.synTime = synTime;
}

public String getPhoneNum() {
return phoneNum;
}

public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}

}
}


3.數據庫連接類

package geturl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class Conn {
//數據庫連接類

/**
* @return Connection
* @method getConn()
*/
public Connection getConn() {

String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://10.68.23.151:3306/tcl_adwdfa";
String username = "ddadad";
String password = "dsadaw";
Connection conn = null;

try {
Class.forName(driver); //
conn = (Connection) DriverManager.getConnection(url, username, password);

System.out.println("數據庫連接成功");

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

return conn;
}


}


4.解析存儲類
package geturl;

import java.net.*;
import java.security.MessageDigest;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

//解析存儲類
public class Iputil {
// 記錄請求的json的頁數
static int count = 1;
// 記錄日志的日期
static String date ;
public static void main(String[] args) throws ParseException {

//請求得到json,有多少頁執行多少次
for (int i=1;i<=count ;i++){
// 得到執行日期前一天的日期
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sj = new SimpleDateFormat("yyyyMMdd");
calendar.add(Calendar.DATE, -1);//當前時間減去一年,即一年前的時間
String str = sj.format(calendar.getTime());
// 將日期賦值給data,run方法需要用
date = str ;
// 用md5 信息摘要算法解密
String token = md5(str + "hyugtf@tcl.com");
// post請求的參數
HashMap<String, String> map = new HashMap<>();
map.put("date", str);
map.put("pageSize", "1000");
map.put("pageNum", i+"");
map.put("token", token);
Iputil iputil = new Iputil();
iputil.run(map);

}

 

}
//md5 信息摘要算法
public static String md5(String source) {
StringBuffer sb = new StringBuffer(32);
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] array = md.digest(source.getBytes("utf-8"));
for (int i = 0; i < array.length; i++) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1, 3));
}
} catch (Exception e) {
}
return sb.toString();
}
//向接口請求數據后封裝后寫入數據庫
public void run(Map<String, String> params) {
JsonBean jsonBean = new JsonBean();
// post請求參數拼接
StringBuffer sb = new StringBuffer();
if (params != null) {
for (Map.Entry<String, String> e : params.entrySet()) {
sb.append(e.getKey());
sb.append("=");
sb.append(e.getValue());
sb.append("&");
}
//去掉最后一個&
sb.substring(0, sb.length() - 1);
}
try {
URL url = new URL("https://tvactivity.api.my7v.com/auddath/activity/dafa");
URLConnection urlConnection = url.openConnection();
HttpURLConnection connection = null;
if (urlConnection instanceof HttpURLConnection) {
connection = (HttpURLConnection) urlConnection;
} else {
System.out.println("輸入urlַ");
return;
}
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
osw.write(sb.toString());
osw.flush();
osw.close();

BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
// 存儲得到的json
String urlString = "";
String current;
while ((current = in.readLine()) != null) {
urlString += current;
}

//將json解析為JSONObject對象
JSONObject json = JSONObject.fromObject(urlString);
// 從json對象中獲取數據存入jsonBean對象中
jsonBean.setStatus(json.optString("status"));
jsonBean.setMsg(json.optString("msg"));
// 得到date仍然是json對象,需要進一步封裝
JSONObject dataObj = json.optJSONObject("data");
JsonBean.DataBean data = new JsonBean.DataBean();

data.setHasNext(dataObj.optInt("hasNext"));
data.setTotalSize(dataObj.optInt("totalSize"));
// 更改count的次數,每頁1000條
count = (data.getTotalSize()/1000+1);
// 將tuples直接封裝為JSONArray
JSONArray tuplesArray = dataObj.optJSONArray("tuples");
List<JsonBean.TuplesBean> tuplesBeansList = new ArrayList<>();
//進一步封裝tuples的數據
for (int i = 0; i < tuplesArray.size(); i++) {
JSONObject tuplesObj = tuplesArray.optJSONObject(i);
JsonBean.TuplesBean tuplesBean = new JsonBean.TuplesBean();
tuplesBean.setId(tuplesObj.getString("id"));
tuplesBean.setSn(tuplesObj.getString("sn"));
tuplesBean.setActivationCode(tuplesObj.getString("activationCode"));
tuplesBean.setSource(tuplesObj.getString("source"));
try {
tuplesBean.setPhoneNum(tuplesObj.getString("phoneNum"));
} catch (Exception e){
tuplesBean.setPhoneNum("");
}
tuplesBean.setIp(tuplesObj.getString("ip"));
tuplesBean.setStatus(tuplesObj.getString("status"));
tuplesBean.setObtainTime(tuplesObj.getString("obtainTime"));
tuplesBean.setSynTime(tuplesObj.getString("synTime"));


// tuplesBean增加到tuplesBeansList
tuplesBeansList.add(tuplesBean);
}
// tuplesBeansList增加到data
data.setList(tuplesBeansList);
// data增加到jsonBean
jsonBean.setData(data);

} catch (IOException e) {
e.printStackTrace();
} //get數據
Conn c = new Conn(); //連接數據庫
Connection con = c.getConn();

try {
Statement sql;
ResultSet res;
int a;

sql = con.createStatement();
/* sql.executeQuery("CREATE TABLE Map (id varchar(255), name varchar(255),tag varchar(255),"
+ "type varchar(255),typecode varchar(255), biz_type varchar(255),address varchar(255),location varchar(255),"
+ "tel varchar(255),postcode varchar(255),website varchar(255),email varchar(255),pcode varchar(255),pname varchar(255),"
+ "citycode varchar(255), cityname varchar(255), adcode varchar(255),adname varchar(255), importance varchar(255),shopid varchar(255),shopinfo varchar(255),poiweight varchar(255),"
+ "gridcode varchar(255),distance varchar(255),navi_poiid varchar(255),entr_location varchar(255),business_area varchar(255),exit_location varchar(255),"
+ "match varchar(255),recommend varchar(255),timestamp varchar(255),alias varchar(255),indoor_map varchar(255),indoor_data varchar(255),"
+ "groupbuy_num varchar(255),discount_num varchar(255),biz_ext varchar(255),event varchar(255),children varchar(255),photos varchar(400)) ");
*/

//從jsonBean中獲取封裝的數據插入數據庫中,得道的每條的數據都插入
for (int i = 0; i < jsonBean.getData().getList().size(); i++) {
a = sql.executeUpdate("insert into huannet_dzbd_info_inc_daily (sn,activationCode,source,phoneNum,ip,status,obtainTime,synTime,date)"
+ "values('" + jsonBean.getData().getList().get(i).getSn() + "','"
+ jsonBean.getData().getList().get(i).getActivationCode() + "','" + jsonBean.getData().getList().get(i).getSource() + "','"+ jsonBean.getData().getList().get(i).getPhoneNum() +"','"+ jsonBean.getData().getList().get(i).getIp() + "'"
+ ",'" + jsonBean.getData().getList().get(i).getStatus() + "','" + jsonBean.getData().getList().get(i).getObtainTime() + "','" + jsonBean.getData().getList().get(i).getSynTime() + "','" + date + "')");

}
} catch (Exception e) {
e.printStackTrace();
}


}
}

2.將打好的jar上傳到服務器

1.打包步驟

點擊idea的Maven后,點擊package。如下圖

 

 

 

 

2.執行打包后的jar

java -jar geturl-1.0-SNAPSHOT.jar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM