Java map 转json

昨天由于业务须要,要在后台拿到一个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

相关文章
相关标签/搜索