struts json 怎么返回多个对象的json数据

 我来答
百度网友5e15b90
2017-10-24 · TA获得超过1031个赞
知道小有建树答主
回答量:806
采纳率:91%
帮助的人:817万
展开全部
第一种方式:
使用struts2-json-plugin插件:这是Struts2自带的插件!请大家自行下载。

[java] view plain copy
package com.jsontostruts2.action;

import com.googlecode.jsonplugin.annotations.JSON;
import com.jsontostruts2.vo.Users;
import com.opensymphony.xwork2.ActionSupport;

/**
* <p>
* 创 建 人:骚年、编程去
* <p>
* 创建日期:2014-6-26
* <p>
*/
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {

private Users users;

@JSON(name="USER")
public Users getUsers() {
return users;
}

public void setUsers(Users users) {
this.users = users;
}

@Override
public String execute() throws Exception {
users = new Users();
users.setUserId(1);
users.setUserName("ctojxzsycztao");
users.setSex("男人");
return SUCCESS;
}

}
User类我就不贴出来了,大家在这里注意一个地方就是getUser()方法有个@Json(name=”USER“)这里使用了JSON注释,注释时指定了name域,name域指定Action属性被序列化成JSON对象的属性名。而且如果该类里面有多个get方法,应该在不要的get方法前面加上@JSON( serialize=false)则代表不返回该字段

xml配置文件如下

[html] view plain copy
<package name="jsonManager" extends="json-default">

<action name="userJson" class="com.jsontostruts2.action.UserAction">
<result type="json"/>
</action>

<action name="jsonlist" class="com.jsontostruts2.action.UserListAction">
<result type="json"/>

</action>

</package>

如果要指定返回的这段还可以这样
[html] view plain copy
<result type="json" name="success">
<param name="root">result</param>
</result>
result就是你要返回的字段名称,name属性可以不指定,如果指定了name属性之后,那么在前端拿到该数据的时候你应该用你命名的属性来取值。

二、通过stream来返回

[java] view plain copy
package com.jsontostruts2.action;

import java.io.InputStream;
import java.io.StringBufferInputStream;

import com.opensymphony.xwork2.ActionSupport;

public class TextResult extends ActionSupport {
private InputStream inputStream;

public InputStream getInputStream() {
return inputStream;
}

public String execute() throws Exception {
inputStream = new StringBufferInputStream("json");
return SUCCESS;
}
}
xml:

[html] view plain copy
<action name="text-result" class="com.jsontostruts2.action.TextResult">
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
</action>

三、通过response对象返回

[java] view plain copy
package com.jsontostruts2.action;

import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringBufferInputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class TextResult extends ActionSupport {

String result;

public String execute() throws Exception {
result="jsontest";
PrintWriter out=ServletActionContext.getResponse().getWriter();
out.print(result);
out.flush();
out.close();
return SUCCESS;
}
}
xml:

[html] view plain copy
<action name="jsontest" class="com.jsontostruts2.action.TextResult">
<result></result>
</action>
总结完毕,Struts2现在基本就是这三种方式来返回json。那么如何将对象,集合等格式转换为json格式呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式