我想在Jackson Serializer中处理自定义注释。用例是在来自两个不同数据源的数据之间进行一致性检查,并有可能忽略某些字段。我可以使用@JsonIgnore,但在进行标准bean序列化时需要这些字段。我的想法是实现一个自定义的序列化程序,当我想要进行一致性检查时,我将使用它。换句话说,定制序列化程序对@IgnoreConsistencyCheck的作用与对@JsonIgnore的作用相同。
下面是一个示例对象:
public class Model implements Serializable {
@JsonIgnore
private int id;
private String name;
private String description
@IgnoreConsistencyCheck
private Date creationDate;
}是否有可能通过扩展Jackson代码来实现它?
谢谢
发布于 2015-07-24 23:14:14
您可以编写自定义筛选器,然后使用@JsonFilter和ObjectMapper配置进行连接。
过滤器代码(CC代表‘一致性检查’):
class IgnoreCCFilter extends SimpleBeanPropertyFilter {
@Override
public void serializeAsField(Object pojo, JsonGenerator jgen,
SerializerProvider prov,
PropertyWriter writer) throws Exception {
if (includeField(writer)) {
writer.serializeAsField(pojo, jgen, prov);
}
}
private boolean includeField(PropertyWriter writer) {
return writer.getAnnotation(IgnoreConsistencyCheck.class) == null;
}
}型号:
@JsonFilter("ignoreCCFields")
public class Model implements Serializable {
@IgnoreConsistencyCheck
private int id;
private String name;
private String description
@IgnoreConsistencyCheck
private Date creationDate;
}ObjectMapper配置:
ObjectMapper objectMapper = new ObjectMapper();
PropertyFilter propertyFilter = new IgnoreCCFilter();
objectMapper.setFilters(new SimpleFilterProvider(
Collections.singletonMap("ignoreCCFields", propertyFilter))
);https://stackoverflow.com/questions/31605689
复制相似问题