Struts中JSON的使用

本文介绍了如何在Struts2框架中使用JSON插件来指定或排除特定属性以实现更灵活的数据序列化。通过配置文件及注解的方式,可以有效地控制哪些属性被序列化为JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ExtJS向后台传入参数与获取后台返回的数据

上面的连接是我写这篇博客的初衷!!

在Struts2中,JSON是Structs 2 的默认内置的返回类型之一,如果要让Action返回JSON类型,需要在在package的extends属性修改为json-default,一旦为Action指定了该结果处理类型,JSON插件就会自动将Action里的数据序列化成JSON格式的数据, 并返回给客户端物理视图的JavaScript。 如果action的属性很多,我们只想要从Action一部分或者一类属性到页面, 这个时候通过result节点后面添加出参数includeProperties或excludeProperties即可。includeProperties指定要包含的属性,而excludeProperties是排除属性,这两个属性都可以通过正则表达式来指定属性。 如:
<struts>
<package name="default" extends="json-default">
<action name="person" class="com.person.PersonAction" method="view">
<result type="json">
<param name="includeProperties">
person\.name,persoon\.age,person\.gender
</param>>
</result>
</action>
</package>
</struts>
但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1...person9,而我只要person1的json数据,
则可以用如下的正则表达式。
<struts>
<constant name="struts.objectFactory" value="spring"/>
<include file="struts-admin.xml"></include>
<package name="default" extends="json-default">
<action name="person" class="com.person.PersonAction" method="view">
<result type="json">
<param name="includeProperties">
person\[\d+\]\.person1
</param>>
</result>
</action>
</package>
</struts>
excludeProperties拦截器的用法与此类同,如果拦截的仅仅是一个对象,如果拦截掉person Bean的整个对象,使用如下配置
<struts>
<constant name="struts.objectFactory" value="spring"/>
<include file="struts-admin.xml"></include>
<package name="default" extends="json-default">
<action name="person" class="com.person.PersonAction" method="view">
<result type="json">
<param name="excludeProperties">
person
</param>>
</result>
</action>
</package>
</struts>
出了在配置文件中来指定或者排除属性之外,。JDK1.5以上版本还可以通过Annotation注释来指定或者排除属性。顺便说一句,Action中的属性是通过get方法去封装成JSON的,如果不指定get方法,也就可以排除该属性(不会真有人这么干吧,如果有人这么干,说明你的Action的属性太少,或者说功能不是很多,所哟供你处理的属性也不是很多)在属性的Get方法上加上注释JSON(serialize=false) ,这样属性就不会被序列化(这个我也不知道该怎么说,姑且先叫序列化吧)。
除此之外,JSON注释还支持如下几个域:
  serialize:设置是否序列化该属性
  deserialize:设置是否反序列化该属性。
  format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。

//使用注释语法来改变该属性序列化后的属性名
 @JSON(name="newName")
 public String getName()
 {
  return this.name;
 }
需要引入 import com.googlecode.jsonplugin.annotations.JSON;

@JSON(serialize=false)
public User getUser() {
return this.User;
}

@JSON(format="yyyy-MM-dd")
public Date getStartDate() {
return this.startDate;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangleijay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值