struts2-json详解(一)

本文深入探讨了StreamResult与JSONResult在Java中的使用方式,详细介绍了它们的参数配置及其在不同场景下的应用,包括文件下载、数据序列化等。同时,文章还阐述了JSON的几种常见配置参数,如忽略等级、过滤空值、输出特定属性等,旨在帮助开发者更高效地处理数据转换与文件操作。

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

result 类型 为stream

<action name="ss">
<result type="stream">
//指定被下载文件的文件类型
//image/jpg 图片jpg
//image/gip 图片gif
//application/zip
<param name="contentType">image/jpg</param>
//指定被下载文件的入口输入流
<param name="inputName">targetFile</param>

//指定下载的文件名
<param name="contentDisposition">filename="wjc_lgo.jpg"</param>

//指定下载文件时的缓冲大小
<param name="bufferSize">4096</param>

</result>
</action>

这五个参数是StreamResult中需要使用到的属性,当然也可以不用配置,但是前提是属性值需要符合StreamResult默认的参数。比如这个文件的contentType是image/gif的,而StreamResult中默认的是text/plain.

JSONArray:是用于将Java中Array以及Collection转换成Json形式的字符串;
JSONObject:是将Java中的普通对象以及Map转换成Json形式的字符串;
JsonConfig:当我们将Java中的对象要转换成Json的时候,需要防止形成环状(比如在一对一等映射关系中),如果你是使用 Hibernate的时候,对于代理对象也是不能转化的,还有就是对于日期的转换也是经常会出错的(如果一定要使用日期,建议使用dwr传输数据)。以上三种情景是在使用Json的时候最容易出错的,幸好JsonConfig帮了我们大忙。使用JsonConfig可以将一个类中包含以上三种类型的属性在将对象转换成Json的时候过滤掉(当然是在客户端不需要那些属性的情况下),同时这样也能减少网络通信的数据量,提升性能。
result 类型 为json
有param下如:

ignoreHierarchy参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,
ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>

excludeNullProperties参数:表示是否去掉空值,默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值。
<result type="json">
<param name="excludeNullProperties">true</param>
</result>

root参数:从返回结果中根据ognl表达式取出你需要输出的结果。
只输出person对象的name属性值,配置如下:
<result type="json">
<param name="root">person.name</param>
</result>

includeProperties参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。
<result type="json">
<param name="includeProperties">person.*, person\.name</param>
</result>

excludeProperties参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同includeProperties参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值