【Struts】Struts返回json格式的结果

1. 使用json-default序列化json数据

1.1 导入struts2-json-plugin的jar包
  • 在struts下载包中可以找到
1.2 设置将被序列化为json数据
public class Demo4Action extends ActionSupport {
	//即将被序列化为json的数据,对应struts.xml的result的root参数值
	private List<Student> students=new ArrayList<Student>();

	public String getStudentList() {
		Student s1=new Student(1,"张三");
		Student s2=new Student(2,"李四");
		Student s3=new Student(3,"王五");
		students.add(s1);
		students.add(s2);
		students.add(s3);
		
		return SUCCESS;
	}

	public List<Student> getStudents() {
		return students;
	}

	public void setStudents(List<Student> students) {
		this.students = students;
	}	
}
1.3 struts.xml配置
<!-- 包要继承json-default才可以使用json格式的result -->
    <!-- 要使用json-default需要导入struts2-json-plugin的jar包 -->
	<package name="default" extends="struts-default,json-default" namespace="/">
		<action name="*Demo4" class="com.action.Demo4Action" method="{1}">
			             
           <result name="success" type="json">
           		<!-- root指定被序列化为json格式的属性,对应Action中的students属性 -->
                  <param name="root">students</param>
                  <!-- 指定是否序列化值为空的属性 -->
                  <param name="excludeNullProperties">true</param>
                 <!-- includeProperties参数指定在根对象中需要序列化的属性,值可以使用通配符 -->
                 <!-- 【[】【]】【.】都要用\转义,\d+表示0到无限大的整数,\[\d+\]表示students的所有子属性 -->
                 <!-- \.表示对象的属性,\[\d+\]\.name表示studentList的所有子属性(这里是Student对象)的name属性 -->
                 <!-- <param name="includeProperties">\[\d+\]\.name</param> -->
                 
                 
                 <!-- 排除序列化的属性 -->
                 <!-- <param name="excludeProperties">id</param> -->
           </result>               	
		</action>		
	</package>

2. 直接用其他json插件响应输出json到客户端

public String test10() throws IOException{
	Book book=new Book(1,"西游记",new Date());						
	//同时设置日期转换格式和序列化排除的属性并响应输出到客户端
	//已设置好编码和数据类型,不会中文乱码,客户端js可直接操作json数据,不用转换类型或声明json类型
	//{"book_name":"西游记","publishDate":"2020-5-21 10:52:00"}
FastjsonUtil.writeJSONWithDateFormatAndExcludes(ServletActionContext.getResponse(),book, "yyyy-MM-dd HH:mm:ss", "id");		

	//不需要返回值,不用在Action中设置result标签
	return NONE;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值