1.目前面对一个问题,在JSON序列化中,不同场景中需要屏蔽不同的敏感字段
2.如果用注解的话,这里有个问题就是所有的序列化内容都是一个规则.
3.,这里用手工进行处理了。
import java.util.HashSet;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.pingpang.websocketchat.ChartUser;
public final class JsonFilterUtil {
public static void addFilterForMapper(ObjectMapper mapper) {
Set<String> sets =new HashSet<String>();
sets.add("userPassword");
SimpleBeanPropertyFilter fieldFilter = SimpleBeanPropertyFilter.serializeAllExcept(sets);
SimpleFilterProvider filterProvider = new SimpleFilterProvider().addFilter("fieldFilter", fieldFilter);
mapper.setFilterProvider(filterProvider).addMixIn(ChartUser.class, FieldFilterMixIn.class);
}
/**
* 定义一个类或接口
*/
@JsonFilter("fieldFilter")
interface FieldFilterMixIn{
}
}
//用户密码 这里注释了注解
//@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String userPassword;
返回的序列化部分信息
"chatSet": [{
"id": "57985DC3949C4A3DADE4C5BDB636745B",
"userCode": "fhx",
"userName": "傅红雪",
"userEmail": null,
"userPhone": null,
"userImagePath": null,
"userSex": null,
"userStatus": "1",
"userCreateDate": "2020-05-01 13:05:52",
"ip": "0:0:0:0:0:0:0:1"
}]