fastJson过滤字段(深层次)

fastjson

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

第一种:在对象响应字段前加注解,这样生成的json也不包含该字段。

@JSONField(serialize=false)  
private String name;  

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

private transient  String name;  

第三种:使用fastjson的拦截器。

//使用fastjson的拦截器
    PropertyFilter profilter = new PropertyFilter(){
    
       @Override
       public boolean apply(Object object, String name, Object value) {
             if (name.equalsIgnoreCase("datetime")){
                 //false表示datetime字段将被排除在外  
                  return false;
                }
             return true;
             }
         };
      removeNullString = JSON.toJSONString(jsonObject,profilter);
      System.out.println(removeNullString);

第四种:直接填写属性(就是你需要什么属性,你就用什么属性)。

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

坚持原创技术分享,您的支持将鼓励我继续创作!