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

方法一、FastJson的注解

     @JSONField(serialize = false)
private String name;

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

方法二、JAVA关键字

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

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

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

     SimplePropertyPreFilter filter = new SimplePropertyPreFilter();
filter.getExcludes().add("PHONE");
System.out.println(JSONObject.toJSONString(u, filter));

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

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

     SimplePropertyPreFilter filter = new SimplePropertyPreFilter("PHONE", "SEX");

注:这里的字段名为转成JSON后的key,不是实体的属性名。如例子中为大写SEX,而不是小写的sex。

方法四、FastJson的属性过滤器

     PropertyFilter profilter = new PropertyFilter() {
@Override
public boolean apply(Object object, String name, Object value) {
if (name.equals("SEX")) {
// false表示字段将被排除在外
return false;
}
return true;
}
};
System.out.println(JSON.toJSONString(u, profilter));

  通过实现PropertyFilter接口的apply方法,来实现过滤属性,方法参数name即为字段的key,参数value即为字段的value,这种方式最强大,因为可以自定义具体过滤规则。方法返回false即为排除该字段。在转JSON的时候,带上过滤器参数即可。注:参数name指的字段名为转成JSON后的key,不是实体的属性名。如例子中为大写SEX,而不是小写的sex。

  如果是JAVA8的话。可以使用lambda表达式,更简洁,如下:

     PropertyFilter profilter = (object, name, value) -> {
if (name.equals("SEX")) {
// false表示字段将被排除在外
return false;
}
return true;
};

附上实体类做参考:

         public class User {

         @JSONField(name = "ID")
private String id; @JSONField(serialize = false)
private String name; @JSONField(name = "AGE")
private transient String age; @JSONField(name = "SEX")
private String sex; @JSONField(name = "PHONE")
private String phone;
}

FastJson序列化时过滤字段(属性)的方法总结的更多相关文章

  1. C#调用XmlSerializer序列化时生成CDATA节点解决方法

    public class Person{    public string Name { get; set; }    public int Age { get; set; }        } 引用 ...

  2. java 序列化时排除指定属性

    java 序列化对象如何排除指定属性呢? java 中序列化对象有多种方式:struts2 ,jackson,json-lib (1)使用struts2 json插件 依赖的jar包:struts2- ...

  3. GSON使用笔记(1) -- 序列化时排除字段的几种方式

    http://blog.csdn.net/zxhoo/article/details/21471005 GSON是Google发布的JSON序列化/反序列化工具,非常容易使用.本文简要讨论在使用GSO ...

  4. sqlite字段属性删除方法

    Sqlite 不支持直接修改字段的名称. 我们可以使用别的方法来实现修改字段名. 1.修改原表的名称 ALTER TABLE table RENAME TO tableOld; 2.新建修改字段后的表 ...

  5. Java静态字段(属性、方法、类别)

    假设域被定义为static,那么每个类中仅仅有一个这种域.作为对照,每个对象对于全部的实例域却都有自己的一份拷贝. 比如,假定须要给每个雇员赋予唯一的标识码. 这里给Employee类加入一个实例域i ...

  6. C# Newtonsoft.Json JObject移除属性,在序列化时忽略

    原文 C# Newtonsoft.Json JObject移除属性,在序列化时忽略 一.针对 单个 对象移除属性,序列化时忽略处理 JObject实例的 Remove() 方法,可以在 指定序列化时移 ...

  7. Jackson 序列化/反序列化时忽略某属性

    https://www.iteye.com/blog/wwwcomy-2397340 博客分类: Spring jacksonread_onlyjsonignore  基于Spring MVC的RES ...

  8. [转]Gson过滤字段

    原文地址:http://my.oschina.net/orgsky/blog/368768 摘要 Gson过滤字段 Gson过滤字段 Gson 过滤 字段 属性 目录[-] 最简单的用法 方法1:排除 ...

  9. Python中的私有属性私有方法、类属性类方法以及单例设计模式

    私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法.在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线) 公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只 ...

随机推荐

  1. Java动态代理--CGLib实现

    上一篇说了通过JDK实现实现了动态代理,但是用JDK实现代理,要求所代理的类必须实现一个接口.如果我们类不实现接口,这就在无法使用JDK提供的Proxy来实现动态代理,这个时候我们应该怎么办呢?我们找 ...

  2. 项目Beta冲刺(团队3/7)

    项目Beta冲刺(团队) --3/7 作业要求: 项目Beta冲刺(团队) 1.团队信息 团队名 :男上加男 成员信息 : 队员学号 队员姓名 个人博客地址 备注 221600427 Alicesft ...

  3. Gym - 247731E :room(最小费用流裸题)

    题意:有N个宿舍(N<200),给出第一年每个宿舍有哪4个同学.现在给出N个4元组y[][4],表示这4个人想住一起,问最少多少人需要换宿舍. 思路:费用流,每个4元组y[]到每个宿舍连边,流量 ...

  4. 我对ISO 七层模型的理解

    应用层: 负责native格式的请求配置,请求发起.关闭等功能: 负责应用数据请求可直接调用的api的支持. 使用表示层和会话层包装而成的便捷工具(API):Alamofire 表示层: 将应用层配置 ...

  5. layoutSubviews的缺省实现是使用约束进行布局

    Discussion The default implementation of this method does nothing on iOS 5.1 and earlier. Otherwise, ...

  6. 2017EC Final L SOS——找规律&&博弈

    题意 有n个格子排成一行,两人轮流填,可填入"S"或"0",先得到"SOS"的人胜:如果全部填完也没有出现"SOS",则 ...

  7. BZOJ 1802: [Ahoi2009]checker

    题目描述 若有两个红格相邻 第一问的答案为0,所有位置上的棋子都可以通过在这两个格子上放棋子得到 第二设f[i]表示想让第i个格子上有棋子需要放的棋子数 若没有,第一问答案为偶数格子上白格的个数,第二 ...

  8. java 中类初始化,构造方法,静态成员变量,静态块的加载顺序

    1.编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型.格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内 ...

  9. ssl 原理简介

    要想弄明白SSL认证原理,首先要对CA有有所了解,它在SSL认证过程中有非常重要的作用.说白了,CA就是一个组织,专门为网络服务器颁发证书的,国际知名的CA机构有VeriSign.Symantec,国 ...

  10. sysmain服务怎么启动 & Win7 SuperFetch无法启动

    在控制面板/管理工具/服务中,只需找到Superfetch这个服务,双击,然后将其启动类型改为自动,并点击启动按钮并确定即可. Superfetch无法启动,系统找不到指定档案 ms-windows ...