美文网首页
前台js拼接json传后台,后台收到json转map

前台js拼接json传后台,后台收到json转map

作者: 云鲸鱼rain | 来源:发表于2019-01-22 14:58 被阅读0次

    学习链接
    https://blog.csdn.net/yufeng005/article/details/52105713
    https://www.jb51.net/article/138193.htm

    前台js拼接json传后台是从上面的第一个链接处学习,但是和实际开发还是有一点出入,自己改了改。总结如下:

    function json() {
        var list=document.getElementById("myForm");//查询form下的所有input标签
        
        var array=[]; //定义一个对象数据
        var obj = {};
        for(var i=0;i<list.length;i++) {
            var gradeKey=list[i].name;
            var gradeValue=list[i].value;
            obj[gradeKey] = gradeValue;
        }
        array.push(obj);
        var allGrade =  JSON.stringify(array);
    }
    

    上图代码是我实际开发中简化了一下,写了一个单层json,实际中是双层的。不管几层,都是为了拼接json字符串,然后传入后台。

    传到后台之后,开始将json转化成map,这个的话是从第二个链接处学习。同理,链接里写的方法也只是解析一层json,放到map里的,在此基础上进行修改,变成解析两层json放到map里。
    什么?单层行不行?嗯,单层也是可以的,至于三层甚至多层?不行。

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Stack;
    
    import org.json.JSONObject;
    
    public class Json {
    
        private static Map<String, String> tempMap = null;
    
        public static void main(String[] args) {    
            
            String postData = "{\"1\":{\"101\":\"\",\"102\":\"\",\"103\":\"\",\"104\":\"\"},\"2\":{\"101\":\"\",\"102\":\"\",\"103\":\"\",\"104\":\"\"},\"3\":{\"101\":\"10\",\"102\":\"13\",\"103\":\"11\",\"104\":\"\"},\"4\":{\"101\":\"\",\"102\":\"23\",\"103\":\"21\",\"104\":\"22\"},\"5\":{\"101\":\"30\",\"102\":\"\",\"103\":\"31\",\"104\":\"32\"}}";
    
            JSONObject obj = new JSONObject(postData); 
            Stack<JSONObject> stObj = new Stack<JSONObject>(); 
            stObj.push(obj); 
            Map<String, Map<String, String>> resultMap =new HashMap<String, Map<String, String>>(); 
            try {
                JsonToMap(stObj,resultMap);
            } catch (Exception e) {
                e.printStackTrace();
            } 
            for (String key:resultMap.keySet()) {
                Map temp = resultMap.get(key);
                for(String str : resultMap.get(key).keySet()) {
                    System.out.println("人员ID:" + key + "。科目ID:" + str + "。成绩分数:" + temp.get(str));
                }
            }
        }
        
        private static void JsonToMap(Stack<JSONObject> stObj, Map<String, Map<String, String>> resultMap) throws Exception { 
            if(stObj == null && stObj.pop() == null) { 
                return; 
            } 
            JSONObject json = stObj.pop(); 
            Iterator it = json.keys();
            while(it.hasNext()) { 
                String key = (String) it.next(); 
                //得到value的值 
                Object value = json.get(key); 
                if(value instanceof JSONObject) { 
                    tempMap = new HashMap<String, String>();
                    stObj.push((JSONObject)value); 
                    //递归遍历 
                    JsonToMap(stObj,resultMap); 
                    resultMap.put(key, tempMap); 
                } 
                else { 
                    tempMap.put(key, value==null?"":(String)value);
                } 
            } 
        } 
    }
    

    相关文章

      网友评论

          本文标题:前台js拼接json传后台,后台收到json转map

          本文链接:https://www.haomeiwen.com/subject/eiiljqtx.html