昨天由于业务须要,要在后台拿到一个map经过Ajax以json的形式给前台拿到,格式有点复杂,因此要本身转一下 java
json:{"1001":[{"id":1000,"title":"测试","startTime":1352082066000,"endTime":1352100060000,"isAllDay":false}],"0_s":[]} jquery
Map<String , List<CalendarDetail>> wcMap=new HashMap<String, List<CalendarDetail>>(); String[] staffIds = staffIDs.split(","); for(int i = 0;i<staffIds.length;i++){ List<CalendarDetail> cList = calendarDetailService.getCalendarDetailList(startTime, endTime, staffService.load(Long.valueOf(staffIds[i]))); wcMap.put(staffIds[i], cList); } //本身转json if(wcMap==null||wcMap.size()<1){ return null; } StringBuffer buffer=new StringBuffer(); buffer.append("{"); for (Iterator<String> iterator = wcMap.keySet().iterator(); iterator.hasNext();) { buffer.append("\""); String key = (String) iterator.next(); buffer.append(key); buffer.append("\":["); if(!wcMap.get(key).isEmpty()){ List<CalendarDetail> cl=wcMap.get(key); for(int i=0;i<cl.size();i++){ CalendarDetail cd = cl.get(i); buffer.append("{\"id\":"+cd.getId()+","); buffer.append("\"title\":\""+cd.getTitle()+"\","); buffer.append("\"startTime\":"+cd.getStartTime().getTime()+","); buffer.append("\"endTime\":"+cd.getEndTime().getTime()+","); buffer.append("\"isAllDay\":"+cd.getIsAllDay()+"}"); if(i<cl.size()-1){ buffer.append(","); } } } buffer.append("]"); if(iterator.hasNext()){ buffer.append(","); } } buffer.append("}"); json=buffer.toString(); return SUCCESS;
这样转完以后,前台ajax: ajax
CUI.ajax({ url: url, type: 'post', async: false, dataType : 'json', success: function(resultList) { for(var a in resultList){ for(var i=0;i<roomIDsArrs.length;i++){ console.log(resultList[a]); } } } });
在自测的过程当中,json转换的时候有不少问题,前台ajax拿不到,后来查了一下问题:
官方说明是:在1.4以后的jquery版本转换json要遵循严格的格式,其中不能多逗号,不能有单引号等等。
因此要转换 String json="{'id':1000}"或{"id":1000,}这样是会转换报错的。应该为"{\”id\":1000}"这样才是正确的形式。
之后本身开发须要用到map转json的状况能够参照我上面的代码,亲测有效。 json