1. 程式人生 > >springMVC返回複雜的json格式資料

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,在編輯程式碼時結構不清晰,不是特殊情況,不建議使用