学习链接
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);
}
}
}
}
网友评论