fastJson過濾欄位(深層次)
阿新 • • 發佈:2019-02-01
前言:前後端分離,一般都是返回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));