昨天因为业务需要,要在后台拿到一个map通过Ajax以json的形式给前台拿到,格式有点复杂,所以要自己转一下
json:{"1001":[{"id":1000,"title":"测试","startTime":1352082066000,"endTime":1352100060000,"isAllDay":false}],"0_s":[]}
Map> wcMap=new HashMap>();
String[] staffIds = staffIDs.split(",");
for(int i = 0;i
List 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 iterator = wcMap.keySet().iterator(); iterator.hasNext();) {
buffer.append("\"");
String key = (String) iterator.next();
buffer.append(key);
buffer.append("\":[");
if(!wcMap.get(key).isEmpty()){
List cl=wcMap.get(key);
for(int i=0;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
buffer.append(",");
}
}
}
buffer.append("]");
if(iterator.hasNext()){
buffer.append(",");
}
}
buffer.append("}");
json=buffer.toString();
return SUCCESS;
这样转完之后,前台ajax:
CUI.ajax({ url: url,
type: 'post',
async: false,
dataType : 'json',
success: function(resultList) {
for(var a in resultList){
for(var i=0;i
console.log(resultList[a]);
}
}
} });
在自测的过程中,json转换的时候有很多问题,前台ajax拿不到,后来查了一下问题:
官方说明是:在1.4之后的jquery版本转换json要遵循严格的格式,其中不能多逗号,不能有单引号等等。
所以要转换 String json="{'id':1000}"或{"id":1000,}这样是会转换报错的。应该为"{\”id\":1000}"这样才是正确的形式。
以后自己开发需要用到map转json的情况可以参照我上面的代码,亲测有效。