您好,欢迎来到微智科技网。
搜索
您的当前位置:首页FastJson序列化时过滤字段(属性)的方法总结

FastJson序列化时过滤字段(属性)的方法总结

来源:微智科技网
FastJson序列化时过滤字段(属性)的⽅法总结

  FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,⽅法有很多,下⾯举⼀些常⽤的⽅法。

⽅法⼀、FastJson的注解

1 @JSONField(serialize = false)2 private String name;

  最便捷,直接在实体的字段上加FastJson的注解serialize = false,转JSON字符串时就不会有该字段。

⽅法⼆、JAVA关键字

1 @JSONField(name = \"AGE\")2 private transient String age;

  在实体字段前⾯,使⽤transient关键字,表⽰该字段不参与序列化,转JSON字符串时就可以忽略掉该字段。因为是JAVA关键字所以也会影响该字段其他序列化操作。

⽅法三、FastJson的属性名过滤器

1 SimplePropertyPreFilter filter = new SimplePropertyPreFilter();2 filter.getExcludes().add(\"PHONE\");

3 System.out.println(JSONObject.toJSONString(u, filter));

  通过SimplePropertyPreFilter过滤器,来过滤指定的属性名,然后在转JSON的时候,带上过滤器参数即可。

  如果需要保留的参数⽐较少,也可以反过来,使⽤filter.getIncludes().add(\"PHONE\");的⽅式来包含指定的字段。还可以直接在new的时候带上,这⾥是可变参数,所以可以同时指定多个,即如下这种写法:

1 SimplePropertyPreFilter filter = new SimplePropertyPreFilter(\"PHONE\

注:这⾥的字段名为转成JSON后的key,不是实体的属性名。如例⼦中为⼤写SEX,⽽不是⼩写的sex。

⽅法四、FastJson的属性过滤器

1 PropertyFilter profilter = new PropertyFilter() { 2 @Override

3 public boolean apply(Object object, String name, Object value) { 4 if (name.equals(\"SEX\")) {

5 // false表⽰字段将被排除在外 6 return false; 7 }

8 return true; 9 }10 };

11 System.out.println(JSON.toJSONString(u, profilter));

  通过实现PropertyFilter接⼝的apply⽅法,来实现过滤属性,⽅法参数name即为字段的key,参数value即为字段的value,这种⽅式最强⼤,因为可以⾃定义具体过滤规则。⽅法返回false即为排除该字段。在转JSON的时候,带上过滤器参数即可。注:参数name指的字段名为转成JSON后的key,不是实体的属性名。如例⼦中为⼤写SEX,⽽不是⼩写的sex。  如果是JAVA8的话。可以使⽤lambda表达式,更简洁,如下:

1 PropertyFilter profilter = (object, name, value) -> {2 if (name.equals(\"SEX\")) {

3 // false表⽰字段将被排除在外4 return false;5 }

6 return true;7 };

附上实体类做参考:

1 public class User { 2

3 @JSONField(name = \"ID\") 4 private String id;

5

6 @JSONField(serialize = false) 7 private String name; 8

9 @JSONField(name = \"AGE\")10 private transient String age;11

12 @JSONField(name = \"SEX\")13 private String sex;14

15 @JSONField(name = \"PHONE\")16 private String phone;17 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务