想在后端调用小程序的发送订阅消息的接口,不知道怎么封装数据,也没有思路😥
调用data 字段内容json格式如下:
{"thing1":{"value":""},"thing3":{"value":""},"date5":{"value":""}}
应该如何在后台封装该格式内容?
按照这个层级创建一个vo,或者直接使用jsonobject按照这个层级然后set值就行了
类似于下面这样写
public static JSONObject getResult(Object data){
JSONObject rs = new JSONObject();
rs.put("result", 1);
rs.put("info", "成功");
rs.put("datas", data);
return rs;
}
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();
}
}
}