设为首页 加入收藏

TOP

关于struts2 json插件的正则表达式写法的一点儿总结
2014-11-24 11:07:44 来源: 作者: 【 】 浏览:0
Tags:关于 struts2 json 插件 正则 表达式 写法 一点儿 总结

最近碰到一个问题,需要将一个集体序列化成json对象,如:List list=new ArrayList();


Person对象中有一个属性是Dept类型的,序列化的时候不想将此属性也序列化,也就是要排除该属性,可以在Result中加一个属性,excludeProperties,关键在于值写什么,这是个正则表达式,我还加了一个root参数,值是"list",也就是说让struts2从这个对象开始进行序列化的操作,如果不配的话会默认使用action.


在序列化的过程中,struts2会逐渐进入这个方法


其中的root就是我配的list对象了.最重要的一步是调用value方法,咱们看看这个方法,


这个方法中又调用了process方法来处理这个对象,


add方法就是在最后的结果添加字符串,expandExpr方法就是用来产生正则是表达式的,对每一个属性,都会产生一个正则是表达式,可以看出表达式里面现在是[0],


然后又调用value方法处理第一个person对象.


person对象是Object类型的,在process方法中会调用bean方法,


在bean方法中会得到这个对象的所有属性,然后遍历属性,如果属性名称为id,则通过expandExpr方法会生成[0].id这个表达式,然后在shouldExcludeProperty方法中跟你传的正则表达式进行比较,如果匹配上就会忽略掉该属性,这个方法里面有两个比较,一个是忽略(excludeProperties)的比较,一个是包含(includeProperties)的比较,会先进行忽略的比较,因此,如果匹配上了,就直接返回true,就不会进行包含的比较,这就跟短路的情况差不多,如果没有匹配,则进行下一个属性的比较.


我们更关心的是这个表达式的规则是怎样的,因此其他细节性的东西我们不必要去关注.


有不清楚的情况的话可以再跟踪源代码看。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android多媒体应用开发-控制摄像.. 下一篇Android 自定义listview无法响应..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·有没有哪些高效的c++ (2025-12-27 08:20:57)
·Socket 编程时 Accep (2025-12-27 08:20:54)
·计算机网络知识点总 (2025-12-27 08:20:52)
·一篇说人话的文章, (2025-12-27 07:50:09)
·Python Web框架哪家 (2025-12-27 07:50:06)