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啊
展开
 我来答
day忘不掉的痛
推荐于2017-09-09 · 知道合伙人数码行家
day忘不掉的痛
知道合伙人数码行家
采纳数:62651 获赞数:223908
本人担任公司网络部总经理多年,有充足的网络经验、互联网相关知识和资讯。

向TA提问 私信TA
展开全部
一.使用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}
deeping136
推荐于2017-09-01
知道答主
回答量:4
采纳率:0%
帮助的人:6.9万
展开全部
把创建出来的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)
}

不知是否是你想要的?
更多追问追答
追问
struts 可以把list也变成json吗
追答
可以,带的有一个插件 struts2-json-plugin-2.x.x.jar ,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式