fastJson过滤字段(深层次)

前言:前后端分离,一般都是返回JSON数据,但是有时候需要返回指定的属性,那么就有如下几种方式:

 

/*
 * 第一种:在对象响应字段前加注解,这样生成的json也不包含该字段。
 * @JSONField(serialize=false)  
 * private String name;  
 */

 

/*
 * 第二种:在对象对应字段前面加transient,表示该字段不用序列化,即在生成json的时候就不会包含该字段了。
 * private transient  String name;  
 */

 

/*
 * 第三种:使用fastjson的拦截器
 * PropertyFilter profilter = new PropertyFilter(){  
  
            @Override  
            public boolean apply(Object object, String name, Object value) {  
                if(name.equalsIgnoreCase("last")){  
                    //false表示last字段将被排除在外  
                    return false;  
                }  
                return true;  
            }  
              
        };  
        json = JSON.toJSONString(user, profilter);  
        System.out.println(json);   
 */
/*
 * 第四种,直接填写属性(就是你需要什么属性,你就用什么属性)
 * SimplePropertyPreFilter filter = new SimplePropertyPreFilter(TTown.class, "id","townname");  
    response.getWriter().write(JSONObject.toJSONString(townList,filter));   
 */

 

//第五种:深层次过滤
//TTown1对象中有属性名称为TTown2对象,只需要TTown1的id属性包括TTown2对象的id属性
SimplePropertyPreFilter filter1 = new SimplePropertyPreFilter(TTown1.class, "id","townname");
SimplePropertyPreFilter filter2 = new SimplePropertyPreFilter(TTown2.class, "id","townname");
SerializeFilter[] filters=new SerializeFilter[]{filter1,filter2};
System.out.println(JSONObject.toJSONString(result, filters));

 

 

 

 

 

 

 

你可能感兴趣的:(#,JSON)