zoukankan      html  css  js  c++  java
  • java-生成任意格式的json数据

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

  • 相关阅读:
    odoo service error 更改端口号
    unique 唯一约束
    odoo 注册失败
    odoo 某个字段权限设置
    linux 定时任务
    odoo webside theme
    js 杂记
    vue3入门总结
    vue输出空格
    css等比例缩放图片
  • 原文地址:https://www.cnblogs.com/libo0125ok/p/7905665.html
Copyright © 2011-2022 走看看