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

用 annotation 辅助 Json-lib 转换 JavaBean

 2010-07-19 00:00:00 来源:WEB开发网   
核心提示: 对于普通的 Object 类型(如 Long,String 等),用 annotation 辅助 Json-lib 转换 JavaBean(3),json-lib 有缺省的值转换处理方式,但是对于一些特殊的类型,使用 annotation 筛选 JavaBean 属性JSONSerializer

对于普通的 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"} 

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

Tags:annotation 辅助 Json

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