fastjson(十一)使用SimplePropertyPreFilter过滤属性

需要根据不同的环境返回定制化返回属性时,可以使用SimplePropertyPreFilter。

SimplePropertyPreFilter的代码接口如下:

public class SimplePropertyPreFilter implements PropertyPreFilter {
          
         
    public SimplePropertyPreFilter(String... properties){
          this(null, properties);
    }

    public SimplePropertyPreFilter(Class<?> clazz, String... properties){
          // ... ...
    }

    public Class<?> getClazz() {
          return clazz;
    }

    public Set<String> getIncludes();

    public Set<String> getExcludes();

    /**
     * @since 1.2.9
     */
    public int getMaxLevel();

    /**
     * @since 1.2.9
     */
    public void setMaxLevel(int maxLevel)

    //...
}

你可以配置includes、excludes(使用getIncludes()、getExcludes()方法获得对象引用进行设置)。当class不为null时,针对特定类型;当class为null时,针对所有类型。

当includes的size > 0时,属性必须在includes中才会被序列化,excludes优先于includes。

来看一下示例代码:

示例对象:

package json.fastjson.filter.globalFilter;

public class VO {
          
   
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

测试类:

package json.fastjson.filter.globalFilter;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;

public class TestGlobalFilter {
          
   

    public static void main(String[] args) {
        VO vo = new VO();
        vo.setId(123);
        vo.setName("flym");

        SimplePropertyPreFilter filter = new SimplePropertyPreFilter(VO.class, "name");

        System.out.println(filter.getExcludes());
        System.out.println(filter.getIncludes());

        System.out.println(JSON.toJSONString(vo, filter));
    }
}

输出结果:

[]
[name]
{"name":"flym"}
经验分享 程序员 微信小程序 职场和发展