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