首页 > 代码库 > FastJson序列化时忽略特定属性

FastJson序列化时忽略特定属性

 

在之前的工作中,一直用jackson来处理json串转换的问题,有些时候我们经常有忽略某些属性的情况,个人比较习惯jackson的注解的方式,而且也是比较灵活的,分别提供了@JsonIgnoreProperties@JsonIgnore等。

而FastJson中,并没有提供类似的方式,而是提供了各种filter机制来实现的,具体可以参考:https://github.com/alibaba/fastjson/wiki/%E5%AE%9A%E5%88%B6%E5%BA%8F%E5%88%97%E5%8C%96

 

下面是个小例子:

主要是通过FastJson自带的SimplePropertyPreFilter这个类实现,其他我们自己可以实现上面文档里面的各种filter接口

Person.java:

 1 /** 2  *  3  */ 4 package json; 5  6 /** 7  * 测试fastjson序列化时忽略制定属性 8  *  9  * @author bells10  * 11  */12 public class Person {13 14     private int age;15 16     private String name;17 18     private int height;19 20     private int weight;21 22     public Person() {23 24     }25 26     public Person(int age, String name, int height, int weight) {27         this.age = age;28         this.name = name;29         this.height = height;30         this.weight = weight;31     }32 33     public int getAge() {34         return age;35     }36 37     public void setAge(int age) {38         this.age = age;39     }40 41     public String getName() {42         return name;43     }44 45     public void setName(String name) {46         this.name = name;47     }48 49     public int getHeight() {50         return height;51     }52 53     public void setHeight(int height) {54         this.height = height;55     }56 57     public int getWeight() {58         return weight;59     }60 61     public void setWeight(int weight) {62         this.weight = weight;63     }64 65 }
View Code

Main.java:

 1 /** 2  *  3  */ 4 package json; 5  6 import com.alibaba.fastjson.JSON; 7 import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; 8  9 /**10  * 测试fastjson序列化时忽略制定属性11  * 12  * @author bells13  * 14  */15 public class Main {16 17     /**18      * @param args19      */20     public static void main(String[] args) {21 22         Person person = new Person(26, "bells", 172, 60);23 24         SimplePropertyPreFilter filter = new SimplePropertyPreFilter(); // 构造方法里,也可以直接传需要序列化的属性名字25 26         filter.getExcludes().add("age"); // SimplePropertyPreFilter 里面有两个Set,分别为27                                             // excludes和includes,这两个Set的作用非常明显。28 29         System.out.println(JSON.toJSONString(person, filter));30 31     }32 33 }

 

FastJson序列化时忽略特定属性