WEB开发网
开发学院软件开发Java 用 annotation 辅助 Json-lib 转换 JavaBean 阅读

用 annotation 辅助 Json-lib 转换 JavaBean

 2010-07-19 00:00:00 来源:WEB开发网   
核心提示: 现在只要把这个 filter 注册到 JsonConfig 中,就实现了属性的过滤,用 annotation 辅助 Json-lib 转换 JavaBean(5),请看清单 5,清单 5. 使用 InvisibleFilter 来过滤不需要的属性JsonConfigconfig=newJsonC

现在只要把这个 filter 注册到 JsonConfig 中,就实现了属性的过滤,请看清单 5。

清单 5. 使用 InvisibleFilter 来过滤不需要的属性

JsonConfig config = new JsonConfig(); 
config.setJsonPropertyFilter( new InvisibleFilter(“LIST”)); //标注了LIST的属性将被过滤掉 
 
System.out.println( JSONSerializer.toJSON( new MyBean(), config ) ); 
// prints {"name":"json"} 

增加其他的 annotation 及 Filter 就可以实现不同的属性过滤方式了。

使用 annotation 自定义 Bean 属性的转换方式

Json-lib 通过 JsonConfig 提供了自定义属性转换方式的接口。

清单 6. 注册 JsonValueProcessor

JsonConfig config = new JsonConfig(); 
config.registerJsonValueProcessor(java.util.Date.class, new JsDateJsonValueProcessor()); 

注册后 Json-lib 在遇到 java.uitl.Date 类型的属性时,会应用 JsDateJsonValueProcessor 的处理方法。

所以,只要实现自己的 JsonValueProcessor 就可以自定义各种 Object 的转换方式了。

根据上一节的讨论,Json-lib 在转换 Bean 属性之前,会将属性数据传递给 PropertyFilter 来判断是否需要过滤掉。因此,我们可以通过一个 Filter 对象获得 Bean 的属性的标注数据,并将它传递给特定的 Processor,Processor 根据得到的标注值知道应该怎么处理这个属性。下面以整型代码为例,说明处理的方法。

一般情况下,一个项目中会涉及许多种不同的代码,我们会为每一种代码定义一个主代码号(代码往往都是整型的),为它的子项定义几个子代码号。例如,我们定义性别的主代码号为 100,并定义男:1,女:2。

上一页  1 2 3 4 5 6  下一页

Tags:annotation 辅助 Json

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接