js数组传值 到后台处理(json)

来源:互联网 发布:数据融合技术论文 编辑:程序博客网 时间:2024/05/29 13:39
在项目中遇到要在前台传数组到后台去,如果一直用string拼接的话,就感觉有点没那么好用,就想到用传数组。我的处理方式是先将要传的值保存数组,然后由数组转成JSON格式传到后台。
1、js 代码:
var table = document.getElementById("gtable");     
var obj = "";
     var array = new Array();
     for(var i = 1;i<=9;i++){
         if(table.rows.cells[1].innerHTML != "" && table.rows.cells[1].innerHTML!=" "){
             obj = new Object();
             obj.num = table.rows.cells[0].innerHTML;
             obj.candidate = table.rows.cells[1].innerHTML;
             array.push(obj);
         }
     }
这是获取整个表格里面的值。
传值 通过:textInfo:encodeURIComponent(JSON.stringify(array)),encodeURIComponent转码,以防止中文到后台变成乱码。
最重要的是JSON.stringify(array)这是将数组转成JSON格式的写法。要先导入json2.js,通过https://github.com/douglascrockford/JSON-js/blob/master/json2.js 。
2、java代码
Object[] list = JSONUtils.getStringArray4Json(URLDecoder.decode(request.getParameter("textInfo"),"UTF-8")));textInfo是前台转过来的变量。
    JSONUtils.getStringArray4Json方法:
/** *//**
     * 从json数组中解析出java字符串数组
     * @param jsonString
     * @return
     */
    public static String[] getStringArray4Json(String jsonString){
        
        JSONArray jsonArray = JSONArray.fromObject(jsonString);
        String[] stringArray = new String[jsonArray.size()];
        for( int i = 0 ; i<jsonArray.size() ; i++ ){
            stringArray = jsonArray.getString(i);
            
        }
        
        return stringArray;
    }
后台处理先转成Object数组对象,然后遍历数组list
for (int j = 0; j < list.length; j++) {
                String textInfo = list[j].toString();
                Map textInfoMap = JSONUtils.getMap4Json(textInfo);
                String answerId = textInfoMap.get("num").toString();
                String cdate=textInfoMap.get("candidate ").toString(); 
               System.out.println(answerId+","+cdate );
            }
这样就可以得到前台传过来的数组的每个值了。这个方法也是参考别人写的,学习别人的,详细记录一下,免得以后自己忘记了
0 0