这篇博客比较简单,官网都有说明:fastjson -- LabelFilter
fastjson的LabelFilter提供了不同场景定制序列化的功能,也就是说我们可以根据我们的需要在不同的场景序列化不同字段的功能。
下面来看看简单的代码:
static class V {
<span style="white-space:pre"> </span>private int id;
private String name;
private String info;
private String password;
@JSONField(label = "normal")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@JSONField(label = "normal")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@JSONField(label = "secret")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "V [id=" + id + ", name=" + name + ", info=" + info
+ ", password=" + password + "]";
}
}
在字段的getXX()方法上配置label属性
V v = new V();
v.setId(123);
v.setInfo("info");
v.setName("name");
v.setPassword("password");
// 序列化label = "normal"的字段
System.out.println(JSON.toJSONString(v, Labels.includes("normal")));
// 序列化label != "normal"的字段
System.out.println(JSON.toJSONString(v, Labels.excludes("normal")));
下面来看看序列化后的结果:
{"id":123,"name":"name"}
{"info":"info","password":"password"}