用 annotation 辅助 Json-lib 转换 JavaBean
2010-07-19 00:00:00 来源:WEB开发网对于普通的 Object 类型(如 Long,String 等),json-lib 有缺省的值转换处理方式,但是对于一些特殊的类型,我们希望用自定义的方式来转换该属性的值。例如:
对于 java.util.Date 类型,我们希望直接转换成时间串:2010-04-10,而不希望得到一个类似 {"year":"2010","month":"4","day":"10"} 这样的结果
对于常用到的代码数据(比如:性别),在定义时它也许是个 Integer(男:1;女:2),我们希望在转换后直接得到:{"性别":"男",...},而不是 {"性别":"1",...}
Json-lib 已经预留出一些接口,让用户修改它的缺省行为。下面我们来看看如何利用 annotation 来配合 Json-lib 解决这两个问题。
使用 annotation 筛选 JavaBean 属性
JSONSerializer 提供了一个 toJSON 的重载方法,增加一个参数 JsonConfig,可以通过这个参数对 Json-lib 的缺省方式做自定义的配置。
清单 2. 自定义 JSONSerializer 的属性过滤器
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
// 定义属性过滤器
PropertyFilter filter = new PropertyFilter(
public boolean apply(Object source, String name, Object value) {
if ( name.equals( “pojoId” ) ) {
return true; // 返回 true, 表示这个属性将被过滤掉
}
return false;
}
);
// 注册属性过滤器
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter( filter );
System.out.println( JSONSerializer.toJSON( new MyBean(), config ) );
// prints {"name":"json"}
Tags:annotation 辅助 Json
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接