用 annotation 辅助 Json-lib 转换 JavaBean
2010-07-19 00:00:00 来源:WEB开发网现在只要把这个 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。
Tags:annotation 辅助 Json
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接