json 过滤 hibernate Set

json 教程: 首先 是jar包,可以到 http://json-lib.sourceforge.net/   去下载

json-lib-2.2.3-jdk15.jar ,注意,还必须要有一下这些

jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6
好了,java方面准备好了 直接用 JsonObject.fromObject(Object object)就可以把普通对象转换为 json对象,然后将其 jsonObject.toString() 传到客户端就可以了,到了客户端 再用 json.js (http://www.JSON.org/json2.js)的 JSON.parse(dataString);就可以得到 js 对象了。

但是用hibernate生成 的 对象 ,如果有 Set 字段的话 ,该值又设置为 lazy="true"的话,会报错,因为JSON对对象进行解析的时候会把所有的 字段都解析,为了不让他解析 这些 Set 字段 ,可以用 

JSONObject net.sf.json.JSONObject.fromObject(Object object, JsonConfig jsonConfig) 这个方法,其中第二个参数是 过滤器,过滤掉不需要解析的字段,过滤器这样定义

JsonConfig jsonConfig = new JsonConfig();
   jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
    public boolean apply(Object source, String name,
      Object value) {
     if(value!=null){
      String typeName = value.getClass().getName();
      if (typeName.equals("org.hibernate.collection.PersistentSet")
        ) {
       return true;
      }
     }
     return false;
    }
   });


你可能感兴趣的:(.net,json,Hibernate)