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

学习链接
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

上图代码是我实际开发中简化了一下,写了一个单层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 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 stObj = new Stack(); 
        stObj.push(obj); 
        Map> resultMap =new HashMap>(); 
        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 stObj, Map> 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();
                stObj.push((JSONObject)value); 
                //递归遍历 
                JsonToMap(stObj,resultMap); 
                resultMap.put(key, tempMap); 
            } 
            else { 
                tempMap.put(key, value==null?"":(String)value);
            } 
        } 
    } 
}

你可能感兴趣的:(前台js拼接json传后台,后台收到json转map)