1. 程式人生 > >fastJson過濾欄位(深層次)

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));