Java 后端 如何封装指定格式的json数据

想在后端调用小程序的发送订阅消息的接口,不知道怎么封装数据,也没有思路😥

调用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;
    }

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/376388
  • 你也可以参考下这篇文章:Java 接收 JSON 数据时,某些参数多了逗号的解决方案
  • 除此之外, 这篇博客: 通过JAVA从接口获取json数据 解析并存入数据库的程序实例中的 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();
            }
    
    
        }
    }