关于map/list集合 和 json串的相互转换
JSON.parse(tempWhiteBoardTextBook); // 将接收到的服务器字符串转为JavaScript对象;
JSON.stringify(tempWhiteBoardTextBook); // 将JavaScript对象或值转换为JSON字符串,一般是发送json数据到服务器;
1、使用此net.sf.json.JSONObject包
将map/list集合 或者 json串转为 JSONObject 对象,然后互相转的时候调用强转或者toString方法即可;
// map集合转json net.sf.json.JSONObject mapJson = net.sf.json.JSONObject.fromObject(map); System.out.println("mapJson == " + mapJson.toString()); mapJson == {"sex":"man","name":"xiaomo","age":"30"} // json转map集合 String jsonString = "{'name':'xiaomo','age':'30','sex':'man'}"; net.sf.json.JSONObject mapJson = net.sf.json.JSONObject.fromObject(jsonString); Map<String,Object> map= (Map<String,Object>)mapJson; System.out.println("map == " + map); map == {"name":"xiaomo","age":"30","sex":"man"}
2、使用此com.alibaba.fastjson.JSON包
将map/list集合 转为 json, 使用JSON.toJSONString(Object)方法返回的就是json串;
// map集合转json String mapJson = com.alibaba.fastjson.JSON.toJSONString(map); System.out.println("mapJson == " + mapJson); mapJson == {"sex":"man","name":"xiaomo","age":"30"} // json转map集合 Object jsonMap = com.alibaba.fastjson.JSON.parse(jsonString); Map<String,Object> model= (Map<String,Object>)jsonMap; System.out.println("model == " + model); model == {"name":"xiaomo","age":"30","sex":"man"} // list集合转json String weekListJson = com.alibaba.fastjson.JSON.toJSONString(weekList); System.out.println("weekListJson == " + weekListJson); weekListJson == ["monday","tuestday","wednesday"] // json转list集合 String jsonString = "['monday','tuestday','wednesday']"; Object parse = com.alibaba.fastjson.JSON.parse(jsonString); List<String> jsonList = (List<String>)parse; System.out.println("jsonList == " + jsonList); jsonList == ["monday","tuestday","wednesday"]
3、使用此com.fasterxml.jackson.databind.ObjectMapper包
// map集合转json com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper(); String mapJson = mapper.writeValueAsString(map); System.out.println("mapJson == " + mapJson); mapJson == {"sex":"man","name":"xiaomo","age":"30"} // list集合转json com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper(); String weekListJson = mapper.writeValueAsString(weekList); System.out.println("weekListJson == " + weekListJson); weekListJson == ["monday","tuestday","wednesday"]
// 将list集合或者map集合响应到前端
response.setContentType("text/html;charset=UTF-8");
mapper.writeValue(response.getWriter(), map); // 响应数据,为json,通过流传输数据
response.setContentType("text/html;charset=UTF-8"); mapper.writeValue(response.getWriter(), list);// 响应数据,为json,通过流传输数据
// 前端接收mapper传来的数据的处理方式
var results = eval('(' + data + ')');
$.each(results, function(index, result) {
console.log(result.postUrl);
console.log(result.image);
})
4、使用此net.sf.json.JSONArray包
// list集合转json net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(weekList); System.out.println("weekListJson == " + jsonArray.toString()); weekListJson == ["monday","tuestday","wednesday"] // json转list集合 String jsonString = "['monday','tuestday','wednesday']"; net.sf.json.JSONArray fromObject = net.sf.json.JSONArray.fromObject(jsonString); List<String> jsonList = (List<String>)fromObject; System.out.println("jsonList == " + jsonList);
5、使用此com.alibaba.fastjson.JSONObject包
// json转对象List集合 List<Transaction> transactionsList = com.alibaba.fastjson.JSONObject.parseArray(result, Transaction.class); // json转Object对象 // 方法一 com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(result); PayPalResult payPalResult = (PayPalResult)JSONObject.toJavaObject(jsonObject, PayPalResult.class); // 方法二 PayPalSubscriptionResult payPalSubscriptionResult = JSONObject.parseObject(result, PayPalSubscriptionResult.class);
6、后台的数据如果是map集合 直接传前台会无法解析,我的做法是 先将map在后台解析为json 再传到前端
// 后台传值数据 model.put("templateMap", JSON.toJSONString(templateMap)); // 前台接收数据 <input type='hidden' id="templateMap" value='<c:out value="${templateMap}" />'> var templateMap = eval('(' + $("#templateMap").val() + ')'); for (var key in templateMap){ // 根据key值作处理 if(key == templateId){ for(var i=0; i < templateMap[key].length; i++){ //遍历,动态赋值 var param = templateMap[key][i]; } } }
7、jsp页面可以内嵌一个url来进行返回值判断
<jsp:include page="/myaccount/student/poster/getStudentPoster.do" flush="true" />
8、如何使用ajax请求提交json格式数据到后台处理
$.ajax({ type:"post", url:"/admin/student/makeElectronicCertificate.do", data:{ studentName:studentName, studyPeriodEn:studyPeriodEn, studyPeriodCn:studyPeriodCn, studyCategory:studyCategory, graduationTime:graduationTime }, dataType:'json',// 声明接收后台传过来的数据格式为json 也有xml和text等 因为这里我做的是json传输 cache:false, success:function(data){ data = JSON.parse(data); // 将后台传过来的json数据进行解析 alert("data == " + data); alert("result == " + data.result + ",targetFilePath == " + data.targetFilePath); }, error:function(message){ alert("调用ajax请求出错"); } }); // 后台接收数据 Map<String,Object> resultMap = new HashMap<String,Object>(); String result = "success"; try { PDFUtil.fillTextToPDF(paramMap); }catch (DocumentException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); result = "failed"; }finally { resultMap.put("result", result); resultMap.put("targetFilePath", ConfigInfo.getHost() + "/file/target.pdf"); // 响应数据,为json,通过流传输数据 String resultJson = mapper.writeValueAsString(resultMap); mapper.writeValue(response.getWriter(), resultJson); }
9、关于js中的JSON对象和JSON字符串之间的相互转换:
var jsonStr = '{ "name": "cxh", "sex": "man" }'; // JSON字符
var jsonObject = { "name": "cxh", "sex": "man" }; // JSON对象
// JSON对象转化为JSON字符
// 方法1
var jsonStr=jsonObject.toJSONString();
// 方法2
var jsonStr=JSON.stringify(jsonObject);
// JSON字符转化为JSON对象
// 方法一
var jsonObject = eval('(' + jsonStr + ')'); // 如果obj本来就是一个JSON对象,那么使用eval函数转换后,哪怕是多次转换,还是JSON对象
// 方法二
var jsonObject = jsonStr.parseJSON();// json对象使用parseJSON()函数处理后会有问题(抛出语法异常)
// 方法三
var jsonObject = JSON.parse(jsonStr);
// 方法四
$.parseJSON(jsonStr);
console.log(jsonObj.name); // 输出cxh
console.log(jsonObj.sex); // 输出man
// 假设有以下JSON数据:
var jsonStr = '{"name": "Tom", "age": 18}';
// 使用parseJSON()方法解析JSON数据:
var jsonObj = $.parseJSON(jsonStr);
console.log(jsonObj.name); // 输出cxh
console.log(jsonObj.sex); // 输出man
10、jquery生成json数据以及解析json数据
// 1 定义返回的教材数据json对象数组 var resultJson = []; // 2 获取到下拉框选中的数据 并放入json数组中 var materialJson = []; $('#select-container select option:selected').each(function() { materialJson.push($(this).text()); }); materialJson.push($("#pageNumber").val()); // 3 定语json对象中的数据 var result = { "materialType": materialType, "type":type, "materialName": materialName, "id": id, "materialNumber": materialNumber, "pageNumber": pageNumber }; // 4 将json对象放入json对象数组中 resultJson.push(result); // 5 将json对象数组转为json格式字符串 JSON.stringify(resultJson); 如: [{ "materialType": "自主研发教材", "type": "whiteBoard", "materialName": "二年级部编版课件(上册) 第七单元 (生字课件)20.雪孩子.pptx", "id": "", "materialNumber": "", "pageNumber": "22" }, { "materialType": "自主研发教材", "type": "whiteBoard", "materialName": "二年级部编版课件(上册) 第七单元 (生字课件)20.雪孩子.pptx", "id": "", "materialNumber": "", "pageNumber": "22" }]
//
浙公网安备 33010602011771号