Struts2返回JSON对象总结 (转)
转载自 日暮月垂
1.struts.xml中package 中extends="json-default"
<package name="json" namespace="/json" extends="json-default">
<package name="json" namespace="/json" extends="json-default">
2.result 中type="json"
<!-- 封装所有的get开首的办法 -->
<result type="json" name="user">
</result>
<!-- 只包含user.id属性 -->
<result type="json" name="user">
<param name="includeProperties">
user.id
</param>
</result>
<!-- 返回user的JSON List列表,此中userInfosList是action中的一个List类型的属性,userInfosList [d+]. userName默示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)
-->
<result name="success" type="json">
<param name="includeProperties">
userInfosList[d+].userName,userInfosList[d+].password
</param>
</result>
<!-- 不包含user属性 -->
<result type="json" name="list">
<param name="excludeProperties">
user
</param>
</result>
<!-- 根对象只包含user -->
<result type="json">
<param name="root">
user
</param>
</result>
<!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,若是不想如许做,须要在设备时指定 ignoreHierarchy 为 false: -->
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
<!-- 封装所有的get开首的办法 --><result type="json" name="user"></result><!-- 只包含user.id属性 --><result type="json" name="user"> <param name="includeProperties"> user.id </param></result><!-- 返回user的JSON List列表,此中userInfosList是action中的一个List类型的属性,userInfosList [d+]. userName默示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)--><result name="success" type="json"><param name="includeProperties"> userInfosList[d+].userName,userInfosList[d+].password</param></result><!-- 不包含user属性 --><result type="json" name="list"> <param name="excludeProperties"> user </param></result><!-- 根对象只包含user --><result type="json"> <param name="root"> user </param> </result> <!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,若是不想如许做,须要在设备时指定 ignoreHierarchy 为 false: --><result type="json"> <param name="ignoreHierarchy">false</param> </result>
3.避免应用get开首的action办法
在属性get办法上方加
@JSON(name="newName")json中的名称
@JSON(serialize=false) 该属性不被参加json
@JSON(format="yyyy-MM-dd") 格局化日期
4.在action中赋值,返回对应的result字符串
申明:
为什么要用includeProperties或excludeProperties 参数:主如果为了过滤掉接口,pojo的set、list、其它对象等不须要的数据防止轮回取其它接洽关系对象或找不到接口。若是不设备,默认是处理惩罚action中的所有属性,若是action中有接口注入,json阻碍器可能找不到接口而返回不了成果,还有若是action中有一个对象,这个对象与很多多少对象都有接洽关系,json阻碍器会将相接洽关系的所有对象的属性全部转换成json格局,若是其它对象有list、set,其返回成果相当重大,有可能是死轮回而无法返回 。若是不消<param name="includeProperties">或其他体式格式进行json数据过滤,经由过程debug你会发明前台返回的json字符串,是把action中的所有属性全部转化成json字符串返回给客户端(包含service接口、pojo所有属性及有接洽关系的pojo。有时辰底子返回不了成果,也不报错,后台履行了,但前台履行不到callback function,这主如果因为找不到接口或者接洽关系的pojo太多,造成死轮回),一般景象下用的最多的就是root、includeProperties 和excludeNullProperties参数。当然还有其他的办法,如给pojo的属性加json注解。
总结:
action中避免应用get开首的action办法,去掉action中的接口的get办法。 为json类型的result设备includeProperties, excludeProperties等参数.
转载自 日暮月垂
1.struts.xml中package 中extends="json-default"
<package name="json" namespace="/json" extends="json-default">
<package name="json" namespace="/json" extends="json-default">
2.result 中type="json"
<!-- 封装所有的get开首的办法 -->
<result type="json" name="user">
</result>
<!-- 只包含user.id属性 -->
<result type="json" name="user">
<param name="includeProperties">
user.id
</param>
</result>
<!-- 返回user的JSON List列表,此中userInfosList是action中的一个List类型的属性,userInfosList [d+]. userName默示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)
-->
<result name="success" type="json">
<param name="includeProperties">
userInfosList[d+].userName,userInfosList[d+].password
</param>
</result>
<!-- 不包含user属性 -->
<result type="json" name="list">
<param name="excludeProperties">
user
</param>
</result>
<!-- 根对象只包含user -->
<result type="json">
<param name="root">
user
</param>
</result>
<!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,若是不想如许做,须要在设备时指定 ignoreHierarchy 为 false: -->
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>
<!-- 封装所有的get开首的办法 --><result type="json" name="user"></result><!-- 只包含user.id属性 --><result type="json" name="user"> <param name="includeProperties"> user.id </param></result><!-- 返回user的JSON List列表,此中userInfosList是action中的一个List类型的属性,userInfosList [d+]. userName默示,userInfosList中存储的对象0..end的userName属性(list中存储的对象必须有userName属性)--><result name="success" type="json"><param name="includeProperties"> userInfosList[d+].userName,userInfosList[d+].password</param></result><!-- 不包含user属性 --><result type="json" name="list"> <param name="excludeProperties"> user </param></result><!-- 根对象只包含user --><result type="json"> <param name="root"> user </param> </result> <!-- "root"对象中父类的field(属性)不会(会?) 默认存放到 JSON数据中,若是不想如许做,须要在设备时指定 ignoreHierarchy 为 false: --><result type="json"> <param name="ignoreHierarchy">false</param> </result>
3.避免应用get开首的action办法
在属性get办法上方加
@JSON(name="newName")json中的名称
@JSON(serialize=false) 该属性不被参加json
@JSON(format="yyyy-MM-dd") 格局化日期
4.在action中赋值,返回对应的result字符串
申明:
为什么要用includeProperties或excludeProperties 参数:主如果为了过滤掉接口,pojo的set、list、其它对象等不须要的数据防止轮回取其它接洽关系对象或找不到接口。若是不设备,默认是处理惩罚action中的所有属性,若是action中有接口注入,json阻碍器可能找不到接口而返回不了成果,还有若是action中有一个对象,这个对象与很多多少对象都有接洽关系,json阻碍器会将相接洽关系的所有对象的属性全部转换成json格局,若是其它对象有list、set,其返回成果相当重大,有可能是死轮回而无法返回 。若是不消<param name="includeProperties">或其他体式格式进行json数据过滤,经由过程debug你会发明前台返回的json字符串,是把action中的所有属性全部转化成json字符串返回给客户端(包含service接口、pojo所有属性及有接洽关系的pojo。有时辰底子返回不了成果,也不报错,后台履行了,但前台履行不到callback function,这主如果因为找不到接口或者接洽关系的pojo太多,造成死轮回),一般景象下用的最多的就是root、includeProperties 和excludeNullProperties参数。当然还有其他的办法,如给pojo的属性加json注解。
总结:
action中避免应用get开首的action办法,去掉action中的接口的get办法。 为json类型的result设备includeProperties, excludeProperties等参数.