一、springMVC返回json格式数据常用的写法是使用@ResponseBody注解,在每一个方法前加上这个注解,springMVC的json解析机制会自动把返回值(Object类型的对象)转换为json格式的数据,如果返回的json对象比较复杂,每一个方法都要定义很多对象,会给开发带来很大的工作量,以下介绍一种方法,直接使用json对象设置数据并放回。
二、当遇到以下json格式数据是,如果差用@ResponseBody方式需要创建多个Java对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
{
"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拼接,不用创建对象返回,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
@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,在编辑代码时结构不清晰,不是特殊情况,不建议使用。
以上这篇springMVC返回复杂的json格式数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/eakom/article/details/78743649