举个栗子:
后台将对象转换成JSON字符串返回,以下就是返回个List而已:
@ResponseBody
@RequestMapping(value = "menu")
public String getMenu() {
// 返回对象
List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
// List中的一个元素
Map<String, Object> map = new HashMap<>();
map.put("addtab","");
map.put("target","");
map.put("title","用户管理");
map.put("url","fa-columns");
map.put("icon","");
map.put("nav","layouts");
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map2 = new HashMap<>();
map2.put("addtab","grid");
map2.put("target","#MasterTabs");
map2.put("title","栅格");
map2.put("url","pages/layouts/grid.html");
map2.put("icon","");
map2.put("nav","layouts");
map2.put("children",new ArrayList<Map<String, Object>>());
list.add(map2);
map.put("children",list);
list2.add(map);
// 对象转为JSON字符串返回
String s = JSONArray.toJSONString(list2);
return s;
}
那么页面这边(注:我用的是ajax请求上面的控制层方法)首先拿到的就是一长串的字符串!注意!拿到的是字符串,不是对象!
var Menu;
$.ajax({
async: false,
url:"/admin/menu",
type:"GET",
dateType: "json",
success:function(result){
// 后台返回JSON字符串。这里接收到的就是字符串
// alert("1-------"+result.length+"------------"+result);
// 使用eval()将JSON字符串转换成JSON对象.后面才能使用 对象.属性名
Menu = eval(result)
}
});
使用 eval("JSON字符串")之后才变成对象。只有变成对象后,才能进行数据的获取。如果不转成对象,拿到的就仅仅是一长串的字符串而已!