1. 程式人生 > >java-生成任意格式的json數據

java-生成任意格式的json數據

mob utf 功能 [] charset logs ejs response 接口

最近研究java的東西。之前靠著自己的摸索,實現了把java對象轉成json格式的數據的功能,返回給前端。當時使用的是 JSONObject.fromObject(object) 方法把java對象換成json格式。也就是先有一個java實體類,例如叫User。然後從數據庫查出列表數據,也就是一個List,裏面的每一條數據都是一個User的實體對象。而如果前端需求變化,需要在當前這個接口中多返回一個字段時,就需要修改這個User實體類,新增字段。這樣一來,所有用到這個User實體類的接口的地方,接口返回的json數據裏都會有新增的這個字段。後來發現可以用一下方法根據需要動態拼接需要的字段。

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數據

技術分享圖片

技術分享圖片

java-生成任意格式的json數據