springMVC返回複雜的json格式資料
阿新 • • 發佈:2019-02-13
一、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,在編輯程式碼時結構不清晰,不是特殊情況,不建議使用