java生成json_java-生成任意格式的json数据

最近研究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数据:

30044e8547577493bea830d2608dc51e.png

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数据

57387473b238e843a94ee8ec2410aaf0.png

bdce49d9ace7ef8e3627f9ce8d2e609c.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值