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