springMVC返回複雜的json格式數據

一、springMVC返回json格式數據常用的寫法是使用@ResponseBody註解,在每一個方法前加上這個註解,springMVC的json解析機制會自動把返回值(Object類型的對象)轉換爲json格式的數據,如果返回的json對象比較複雜,每一個方法都要定義很多對象,會給開發帶來很大的工作量,以下介紹一種方法,直接使用json對象設置數據並放回
二、當遇到以下json格式數據是,如果差用@ResponseBody方式需要創建多個Java對象

{
	"total":2,
	"list":[
		{
			"person":{"name":"eakom0","key":0},
			"msg":{"cod":0,"name":"eakom0"}
		},
		{
			"person":{"name":"eakom1","key":1},
			"msg":{"cod":1,"name":"eakom1"}
		}
	],
	"attachment":{"name":"附件","version":1}
}

這裏寫圖片描述
如果採用拼接方式,直接採用JsonObject拼接,不用創建對象返回,代碼如下:

 @RequestMapping("returnJson")
    public void returnJson (HttpServletRequest request, HttpServletResponse response){
    		JSONObject json = new JSONObject();	
    		json.element("total", 2);
    		
    		List<Map<String,JSONObject>> list=new ArrayList<Map<String,JSONObject>>();
    		for(int i=0;i<2;i++){
    			JSONObject person=new JSONObject();
    			person.element("name", "eakom"+i);
    			person.element("key", i);
    				
    			JSONObject msg=new JSONObject();
    			msg.element("name", "eakom"+i);
    			msg.element("cod", i);
    			
    			Map<String,JSONObject> map=new HashMap<String,JSONObject>();
    			map.put("person", person);
    			map.put("msg", msg);
    			list.add(map);
    		}
    		
    		json.element("list", list);
    		
    		JSONObject attachment=new JSONObject();
    		attachment.element("name", "附件");
    		attachment.element("version", 1);
  		
    		json.element("attachment", attachment);
    		
    		responseDatagrid(response, json);
    }
    public void responseDatagrid(HttpServletResponse response, JSONObject jObject) {
		response.setContentType("application/json");
		response.setHeader("Cache-Control", "no-store");
		try {
			PrintWriter pw=response.getWriter();
			pw.write(jObject.toString());
			pw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

三、用這種放返回json,在編輯代碼時結構不清晰,不是特殊情況,不建議使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章