是否可以使用Jackson序列化POJO属性的白名单子集(白名单仅在运行时知道)?
到目前为止我所知道的所有解决方案(Views,@JsonIgnoreProperties
等)都是静态的编译时解决方案。
此外,我的后端以下列格式返回结果:
{
"outcome": "SUCCESS", // an enum
"message": "Success.", // a message for the developer
"result": {
// Some result that's different for each call
}
}
所以我正在寻找一种只能应用于对象图部分的解决方案(如result
属性的内容)。
答案 0 :(得分:2)
您可能希望查看@JsonFilter
。
请参阅serializing only fields that meet some criteria上的本教程,其中包含详细信息以及其他几种方法。
完整性
@JsonFilter("pojo-filter")
class Pojo {
public int foo;
}
FilterProvider filters = new SimpleFilterProvider()
.addFilter("pojo-filter", new SimpleBeanPropertyFilter() {
@Override
protected boolean include(PropertyWriter writer) {
return "foo".equals(writer.getName())
? Random.nextBoolean()
: true;
}
});
new ObjectMapper().writer().filters(filters).write(new Pojo());
在全球范围内,您可以使用ObjectMapper.setFilterProvider