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

相關文章
相關標籤/搜索