Struts2 如何返回json数组
一般struts返回json,是将数据封装成map,在struts.xml设置type=json类似这种Map<String,Object>map=newHashMap<...
一般struts返回json,是将数据封装成map,在struts.xml设置type=json
类似这种
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> m = new HashMap<String, Object>();
m.put("id", j.getId());
m.put("jobName", j.getJobName());
m.put("status", j.getStatus());
m.put("sort", j.getSort());
map.put("data", m);
map.put("status", 0);
this.setJobJson(map);
把,这样得到的
json:{"data":{"id":"8","name":"VIP1","pid":null,"remark":"","sort":"","create_time":"1384997867","update_time":"0","is_del":"0"},"info":"","status":0}
如果我想得到这样的json
[{"id":"65","user_id":"1","start_date":"2014-02-07","start_time":"05:00:00","end_date":"2014-02-07","end_time":"05:30:00","add_file":"","is_del":"0"},
{"id":"66","user_id":"1","start_date":"2014-02-08","start_time":"05:00:00","end_date":"2014-02-19","end_time":"05:00:00","add_file":"","is_del":"0"}]
应该如何封装map啊 展开
类似这种
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> m = new HashMap<String, Object>();
m.put("id", j.getId());
m.put("jobName", j.getJobName());
m.put("status", j.getStatus());
m.put("sort", j.getSort());
map.put("data", m);
map.put("status", 0);
this.setJobJson(map);
把,这样得到的
json:{"data":{"id":"8","name":"VIP1","pid":null,"remark":"","sort":"","create_time":"1384997867","update_time":"0","is_del":"0"},"info":"","status":0}
如果我想得到这样的json
[{"id":"65","user_id":"1","start_date":"2014-02-07","start_time":"05:00:00","end_date":"2014-02-07","end_time":"05:30:00","add_file":"","is_del":"0"},
{"id":"66","user_id":"1","start_date":"2014-02-08","start_time":"05:00:00","end_date":"2014-02-19","end_time":"05:00:00","add_file":"","is_del":"0"}]
应该如何封装map啊 展开
2个回答
推荐于2017-09-09 · 知道合伙人数码行家
关注
展开全部
一.使用Servlet的输出流
JSON接口的实质是:JSON数据在传递过程中,其实就是传递一个普通的符合JSON语法格式的字符串而已,所谓的“JSON对象”是指对这个JSON字符串解析和包装后的结果。
所以这里只需要将一个JSON语法格式的字符串写入到Servlet的HttpServletResponse中,这里使用的是PrintWriter的方式,当然也可以采用Stream流的方式。
需要注意的是:
在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),
HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会造成中文乱码。
而且设置编码时必须在调用getWriter之前设置,不然是无效的。
编写接口代码:
这里的方法与一般的Struts2方法的区别是这里是void返回类型。
public void write() throws IOException{
HttpServletResponse response=ServletActionContext.getResponse();
/*
* 在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),
* HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会
* 造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。
* */
response.setContentType("text/html;charset=utf-8");
//response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
//JSON在传递过程中是普通字符串形式传递的,这里简单拼接一个做测试
String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"张三\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
out.println(jsonString);
out.flush();
out.close();
}
配置action
从以下的配置中可以明显的看到配置与普通的action配置没有任何区别,只是没有返回的视图而已。
<action name="write" class="json.JsonAction" method="write" />
返回值
{"user":{"id":"123","name":"张三","say":"Hello , i am a action to print a json!","password":"JSON"},"success":true}
JSON接口的实质是:JSON数据在传递过程中,其实就是传递一个普通的符合JSON语法格式的字符串而已,所谓的“JSON对象”是指对这个JSON字符串解析和包装后的结果。
所以这里只需要将一个JSON语法格式的字符串写入到Servlet的HttpServletResponse中,这里使用的是PrintWriter的方式,当然也可以采用Stream流的方式。
需要注意的是:
在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),
HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会造成中文乱码。
而且设置编码时必须在调用getWriter之前设置,不然是无效的。
编写接口代码:
这里的方法与一般的Struts2方法的区别是这里是void返回类型。
public void write() throws IOException{
HttpServletResponse response=ServletActionContext.getResponse();
/*
* 在调用getWriter之前未设置编码(既调用setContentType或者setCharacterEncoding方法设置编码),
* HttpServletResponse则会返回一个用默认的编码(既ISO-8859-1)编码的PrintWriter实例。这样就会
* 造成中文乱码。而且设置编码时必须在调用getWriter之前设置,不然是无效的。
* */
response.setContentType("text/html;charset=utf-8");
//response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
//JSON在传递过程中是普通字符串形式传递的,这里简单拼接一个做测试
String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"张三\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
out.println(jsonString);
out.flush();
out.close();
}
配置action
从以下的配置中可以明显的看到配置与普通的action配置没有任何区别,只是没有返回的视图而已。
<action name="write" class="json.JsonAction" method="write" />
返回值
{"user":{"id":"123","name":"张三","say":"Hello , i am a action to print a json!","password":"JSON"},"success":true}
展开全部
把创建出来的map放到List里面去,如
List datas = new ArrayList<HashMap<String,Object>();
for(...){//具体业务
Map<String, Object> m = new HashMap<String, Object>();
m.put("id", j.getId());
m.put("jobName", j.getJobName());
m.put("status", j.getStatus());
m.put("sort", j.getSort());
map.put("data", m);
map.put("status", 0);
datas.add(m)
}
不知是否是你想要的?
List datas = new ArrayList<HashMap<String,Object>();
for(...){//具体业务
Map<String, Object> m = new HashMap<String, Object>();
m.put("id", j.getId());
m.put("jobName", j.getJobName());
m.put("status", j.getStatus());
m.put("sort", j.getSort());
map.put("data", m);
map.put("status", 0);
datas.add(m)
}
不知是否是你想要的?
更多追问追答
追问
struts 可以把list也变成json吗
追答
可以,带的有一个插件 struts2-json-plugin-2.x.x.jar ,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询