zoukankan      html  css  js  c++  java
  • 使用Hashtable和List结合拼json数据

    在做项目的时候,有时候需要向页面返回一个特定的json类型的数据,一般情况下会有下面的方法进行拼接:

        public String chongzhiList() throws Exception {
            List list = new ArrayList();
            if (StringUtils.isNotEmpty(psCode)) {
                
                list = totalQuantityManager.findPsList(psCode);
            }
            //创建StringBuffer类型的变量json,用于存放拼装好的json数据
            StringBuffer json = new StringBuffer("[");
            //如果list不为空则执行if内的for循环
            if(list!=null && list.size()>0){
                for(int i=0;i<list.size();i++){
                    Object[] strs = (Object[]) list.get(i);
                    json.append("{"id":" + """ + strs[0] + "",");
                    json.append(""wuranwu":" + """ + strs[1] + "",");
                    json.append(""danwei":" + """ + strs[2] + "",");
                    json.append(""yipaifangliang":" + """ + strs[3] + "",");
                    json.append(""chongzhiliang":" + """ + strs[4] + "",");
                    json.append(""xukeliang":" + """ + strs[5] + "",");
                    json.append(""yuliang":" + """ + strs[6] + "",");
                    json.append(""icyuliang":" + """ + strs[7] + ""}");
                    if(i<list.size()-1){
                        json.append(",");
                    }
                }
            }
            json.append("]");
            this.jsonObject = json.toString();
            return JSON;
        }

    这种方式在碰到更加复杂的情况下就显得力不从心了,会经常出现一些少逗号,多括号的问题,下面介绍一种方法拼接特定的json类型数据:

    利用Hashtable和List结合,使用JSONObject类进行转化的方式会更加的方便,相关文章链接:JSONObject和JSONArray

    1.拼出给定的json数据:

    {
      "huaXue": [
        400,
        1132,
        601,
        500,
        120,
        90,
        1000
      ],
      "anDan": [
        1320,
        7000,
        601,
        234,
        120,
        50000,
        20
      ],
      "erYangHualiu": [
        1320,
        1132,
        601,
        234,
        120,
        90,
        20
      ],
      "danYangHuawu": [
        1320,
        1132,
        601,
        234,
        120,
        90,
        20
      ]
    }

    方法如下:

        public String getMonthFlow() throws Exception{
            //创建List对象用来存放接收结果集
            List list = new ArrayList();
            list = totalQuantityManager.getMonthFlow();
            //创建list1,list2,list3,list4分别用来存放每一条数据中的特定值
            ArrayList list1 = new ArrayList();
            ArrayList list2 = new ArrayList();
            ArrayList list3 = new ArrayList();
            ArrayList list4 = new ArrayList();
        
            //for循环用来循环每一条数据,从每一条数据中取出特定的数据放入集合中
            for (int i = 0; i < list.size(); i++) {
                Object[] strs = (Object[]) list.get(i);
                list1.add(strs[1]);
                list2.add(strs[2]);
                list3.add(strs[4]);
                list4.add(strs[5]);
            }
            
            
            //创建一个哈希表对象,用于装载键值对形式的数据
            Hashtable dic = new Hashtable();
            dic.put("huaXue",list1);
            dic.put("anDan",list2);
            dic.put("erYangHualiu",list3);
            dic.put("danYangHuawu",list4);
            //利用JSONObject类将哈希表对象转换为json类型的数据
            this.jsonObject=JSONObject.fromObject(dic).toString();
        return JSON;
        }   

    2.转换下面类型的json数据

    {
      "type0": [
        {
          "month": 1,
          "value": 400
        },
        {
          "month": 2,
          "value": 1132
        },
        {
          "month": 3,
          "value": 601
        },
        {
          "month": 4,
          "value": 500
        },
        {
          "month": 5,
          "value": 120
        },
        {
          "month": 6,
          "value": 90
        },
        {
          "month": 7,
          "value": 1000
        }
      ],
      "type1": [
        {
          "month": 1,
          "value": 400
        },
        {
          "month": 2,
          "value": 1132
        },
        {
          "month": 3,
          "value": 601
        },
        {
          "month": 4,
          "value": 500
        },
        {
          "month": 5,
          "value": 120
        },
        {
          "month": 6,
          "value": 90
        },
        {
          "month": 7,
          "value": 1000
        }
      ],
      "type2": [
        {
          "month": 1,
          "value": 400
        },
        {
          "month": 2,
          "value": 1132
        },
        {
          "month": 3,
          "value": 601
        },
        {
          "month": 4,
          "value": 500
        },
        {
          "month": 5,
          "value": 120
        },
        {
          "month": 6,
          "value": 90
        },
        {
          "month": 7,
          "value": 1000
        }
      ],
      "type3": [
        {
          "month": 1,
          "value": 400
        },
        {
          "month": 2,
          "value": 1132
        },
        {
          "month": 3,
          "value": 601
        },
        {
          "month": 4,
          "value": 500
        },
        {
          "month": 5,
          "value": 120
        },
        {
          "month": 6,
          "value": 90
        },
        {
          "month": 7,
          "value": 1000
        }
      ]
    }

    方法如下:

        public String getMonthFlow() throws Exception{
            //方法一:
            //月份
            String month = "";
            List list = new ArrayList();
            list = totalQuantityManager.getMonthFlow();
            
            ArrayList list1 = new ArrayList();
            ArrayList list2 = new ArrayList();
            ArrayList list3 = new ArrayList();
            ArrayList list4 = new ArrayList();
            
            
            Hashtable dic1 = new Hashtable();
            Hashtable dic2 = new Hashtable();
            Hashtable dic3 = new Hashtable();
            Hashtable dic4 = new Hashtable();
        
            
            for (int i = 0; i < 4*list.size(); i++) {
                Object[] strs = (Object[]) list.get(i%7);
                String monTH = "";
                if (strs[0]!=null) {
                    monTH = strs[0].toString().substring(4);
                }
                if ("01".equals(monTH)) {
                    month = "1";
                }else if ("02".equals(monTH)) {
                    month = "2";
                }else if ("03".equals(monTH)) {
                    month = "3";
                }else if ("04".equals(monTH)) {
                    month = "4";
                }else if ("05".equals(monTH)) {
                    month = "5";
                }else if ("06".equals(monTH)) {
                    month = "6";
                }else if ("07".equals(monTH)) {
                    month = "7";
                }else if ("08".equals(monTH)) {
                    month = "8";
                }else if ("09".equals(monTH)) {
                    month = "9";
                }else if ("10".equals(monTH)) {
                    month = "10";
                }else if ("11".equals(monTH)) {
                    month = "11";
                }else if ("12".equals(monTH)) {
                    month = "12";
                }
                if (i/7==0) {
                    dic1.put("month", month);
                    dic1.put("value", strs[1]);
                    list1.add(dic1);
                    dic1 = new Hashtable();
                }else if (i/7==1) {
                    dic2.put("month", month);
                    dic2.put("value", strs[2]);
                    list2.add(dic2);
                    dic2 = new Hashtable();
                }else if (i/7==2){
                    dic3.put("month", month);
                    dic3.put("value", strs[3]);
                    list3.add(dic3);
                    dic3 = new Hashtable();
                }else if (i/7==3) {
                    dic4.put("month", month);
                    dic4.put("value", strs[4]);
                    list4.add(dic4);
                    dic4 = new Hashtable();
                }
            }
            //哈希表对象(存放键值对())
            Hashtable dic = new Hashtable();
            dic.put("type0",list1);
            dic.put("type1",list2);
            dic.put("type2",list3);
            dic.put("type3",list4);
            this.jsonObject=JSONObject.fromObject(dic).toString();
            
    /*        //方法二:
             List list = new ArrayList();
            list = totalQuantityManager.getMonthFlow();
            Hashtable dic = new Hashtable();
            for(int j=0;j<4;j++){
                ArrayList list_s = new ArrayList();
                //循环行
                for (int i = 0; i < list.size(); i++) {
                    Object[] strs = (Object[]) list.get(i);
                    Hashtable dic1 = new Hashtable();
                    dic1.put("month", strs[0]);
                    dic1.put("value", strs[1]);                
                    list1.add(dic1);
                    Hashtable dic2 = new Hashtable();
                    dic2.put("month", strs[0]);
                    dic2.put("value", strs[2]);    
                    Hashtable dic3 = new Hashtable();
                    dic3.put("month", strs[0]);
                    dic3.put("value", strs[3]);    
                    Hashtable dic4 = new Hashtable();
                    dic4.put("month", strs[0]);
                    dic4.put("value", strs[4]);    
                
                }
                dic.put("type"+j,list_s);
            }
            this.jsonObject=JSONObject.fromObject(dic).toString();*/
        return JSON;
        }
  • 相关阅读:
    js运算符优先级
    整理HTML的一些基础
    NSIS学习-Push&Pop(转发)
    NSIS学习-标记
    关于python中文报错的解决办法
    JDK和JRE的区别-zz
    ZZ-selenium RC for python环境搭建
    庞果网(最小操作数)
    python win32com在读取word文档时,遇到的问题
    python 如何将ppt和word转化为txt文档
  • 原文地址:https://www.cnblogs.com/shuilangyizu/p/6039305.html
Copyright © 2011-2022 走看看