最近研究java的东西。之前靠着自己的摸索,实现了把java对象转成json格式的数据的功能,返回给前端。当时使用的是 JSONObject.fromObject(object) 方法把java对象换成json格式。也就是先有一个java实体类,例如叫User。然后从数据库查出列表数据,也就是一个List,里面的每一条数据都是一个User的实体对象。而如果前端需求变化,需要在当前这个接口中多返回一个字段时,就需要修改这个User实体类,新增字段。这样一来,所有用到这个User实体类的接口的地方,接口返回的json数据里都会有新增的这个字段。后来发现可以用一下方法根据需要动态拼接需要的字段。
1、demo
packagecom.lin.domain;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;public classTest {public static void main(String[] args) throwsException {
JSONObject createJSONObject=createJSONObject();
System.out.println(createJSONObject);
}//创建JSONObject对象
private staticJSONObject createJSONObject() {
JSONObject result= newJSONObject();
result.put("success", true);
result.put("totalCount", "30");
JSONObject user1= newJSONObject();
user1.put("id", "12");
user1.put("name", "张三");
user1.put("createTime", "2017-11-16 12:12:12");
JSONObject user2= newJSONObject();
user2.put("id", "13");
user2.put("name", "李四");
user2.put("createTime", "2017-11-16 12:12:15");
JSONObject department= newJSONObject();
department.put("id", 1);
department.put("name","技术部");
user1.put("department", department);
user2.put("department", department);//返回一个JSONArray对象
JSONArray jsonArray = newJSONArray();
jsonArray.add(0, user1);
jsonArray.add(1, user2);
result.element("data", jsonArray);returnresult;
}
}
返回的json数据:
2、接口demo
以下是真实的java接口,从数据库查询数据
@ResponseBody
@RequestMapping(value="/getRoleMenuList.do", method=RequestMethod.GET)public void getRoleMenuList(HttpServletRequest req, HttpServletResponse res, Integer roleId) throwsIOException{
res.setHeader("Content-type", "application/json;charset=UTF-8");
res.setCharacterEncoding("UTF-8");
ResListData rld= newResListData();
JSONObject result= newJSONObject();try{
Map params1 = new HashMap<>();
params1.put("roleId", roleId);
params1.put("menuLevel", 1);
List fMenuList = rjService.getRoleMenuList2(params1); //一级菜单
JSONArray firstList = newJSONArray();for(int i=0; i
RoleJuri firstMenu=fMenuList.get(i);
JSONObject firstResult= newJSONObject();
firstResult.put("id", firstMenu.getId());
firstResult.put("name", firstMenu.getMenuName());
firstResult.put("url", firstMenu.getMenuUrl());
Map params2 = new HashMap<>();
params2.put("roleId", roleId);
params2.put("menuPId", firstMenu.getMenuId());
List sMenuList = rjService.getRoleMenuList2(params2); //二级菜单
JSONArray secondList= newJSONArray();for(int j=0; j
RoleJuri secondMenu=sMenuList.get(j);
JSONObject secondResult= newJSONObject();
secondResult.put("id", secondMenu.getId());
secondResult.put("name", secondMenu.getMenuName());
secondResult.put("url", secondMenu.getMenuUrl());
secondList.add(secondResult);
}
firstResult.put("children", secondList);
firstList.add(firstResult);
}if(fMenuList.size() > 0){ //查询到了一级菜单
result.put("success", 1);
result.put("data", firstList);
}else{ //未查询到一级菜单
result.put("success", 0);
result.put("data", newArray());
result.put("error", "未获取到菜单数据");
}
}catch(Exception e) {
result.put("success", 0);
result.put("data", newArray());
result.put("error", "服务器运行错误");
}
res.getWriter().write(result.toString());
}
返回的json数据