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 bells
10  * 
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 bells
13  * 
14  */
15 public class Main {
16 
17     /**
18      * @param args
19      */
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 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。