后台向前台響應的json數據格式的一些問題


最近在寫后台向前台easyUI頁面發送數據時遇到的一些報錯。

首先easyUI內部封裝了許多的方法和對象,以至於很多參數都不清楚,需要查詢,其次easyUI也是有內置ajax所以從后台響應回來的數據一般是json格式。

這樣就會遇到一些問題,json格式該怎么處理?json里的數據是什么類型的?下面一一說明。

1,首先一般我們會使用jdbc工具類這樣返回的是一個

ResultSet結果集,以前不清楚,現在親測可用直接將結果集轉為list集合並且直接封裝到jsonarray中。
同樣為了前台需求,我們需要給json數據處理成正確的格式,其中就包括日期格式必須轉換為String類型,下面提供一個工具類
public static JSONArray formatRsToJsonArray(ResultSet rs)throws Exception{

        ResultSetMetaData md=rs.getMetaData();

        int num=md.getColumnCount();   //  得到列數
        JSONArray array=new JSONArray();
        while(rs.next()){
            JSONObject mapOfColValues=new JSONObject();
            for(int i=1;i<=num;i++){
                Object o=rs.getObject(i);
                if(o instanceof Date){
                    mapOfColValues.put(md.getColumnName(i), DateUtil.formatDate((Date)o, "yyyy-MM-dd"));
                }else{
                    mapOfColValues.put(md.getColumnName(i), rs.getObject(i));                    
                }
            }
            array.add(mapOfColValues);
        }
        return array;
    }

此類只需將ResultSet傳入便會自動轉換每一列,並返回jsonarray

2.我自己常用的第三方工具類dbutil會直接返回集合,然后直接放入jsonarray即可。但如果數據里沒有日期還好,有日期就很難處理。最后糾結半天,還是用一個工具類解決最方便。

public static JSONArray formatRsToJsonArray(List list)throws Exception{
//轉換學生數據格式的jsonutil類,注意數據格式是寫死的 需要自己定義

        JSONArray array=new JSONArray();
        Iterator it = list.iterator();
        while (it.hasNext()){
            Student next = (Student) it.next();
            JSONObject mapOfColValues=new JSONObject();

                if(next.getBorndate() instanceof Date){
                    mapOfColValues.put("borndate", DateUtil.formatDate(next.getBorndate(), "yyyy-MM-dd"));
                }
                    mapOfColValues.put("suid",next.getSuid() );
                    mapOfColValues.put("sid",next.getSid());
                    mapOfColValues.put("uname",next.getUname());
                    mapOfColValues.put("sex",next.getSex());
                    mapOfColValues.put("email",next.getEmail() );
                    mapOfColValues.put("ps", next.getPs());
                    mapOfColValues.put("classname",next.getClassname());

            array.add(mapOfColValues);
        }
        return array;
    }

JSONArray jsonArray=null;
        try {
            jsonArray = MyjsonUtil.formatRsToJsonArray(pageBean.getList());
        } catch (Exception e) {
            e.printStackTrace();
        }
        jo.put("rows",jsonArray);

        ResponseUtil.write(jo,resp);

 

注意我的工具類是自己寫的 不具有通用性,需要自己更改數據。如果有好的方法,還請大佬指點一下。

 


免責聲明!

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



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