Struts2中json的使用总结
首先看下面的配置文件中的两种写法:当然Action所在的包必须继承json-default:
<package name="default" extends ="json-default" >
第一种:
<action name="upload_*" class="uploadAction" method="{1}">
<result type="json">
<param name="root">fileName</param>
</result>
</action>
第二种:
<action name="uploadJson" class="uploadJsonAction" method="upload">
<result type="json" name="success">
</result>
</action>
当然,两种方式都能达到相应的效果,但是开发中我们建议使用第一种;
- 第一种指定了struts2需要帮你转换成的json的Action中bean的属性:filename;也就是struts2只会调用getFileName()这一个get方法,忽略其他bean属性的的get*方法,自然节省了不少资源。
- 第二种没有指定需要转换成json的属性,只要Action中有get*方法的,strut2都会帮你转换,你节省的代码换来了程序不必要的开支。
但是,strut2的开发者显然做的比较得当,下面的注解方式可以帮你改进不少你的代码,当然个人觉得还是加上root方便、简单:
- @JSON(serialize=false) :如果你不想让某个属性被json序列化,只要在其get*方法上面加上以下注解即可;
- @JSON(name="newName"):返回的json数据中名称是指定的新名称
- @JSON(format ="yyyy-MM-dd'T'HH:mm:ss")设置用于格式化输出、解析日期表单域的格式。
- @JSON(deserialize=true)设置是否反序列化该属性
下面看看其他几种配置的写法:
第三种:excludeNullProperties 参数:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值。
<result type="json">
<param name="excludeNullProperties">true</param>
</result>
第四种: ignoreHierarchy 参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的
属性值,ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。