我需要在通过 Jackson ObjectMapper
序列化对象时添加 @JsonIgnore
带注释的字段。我知道您可能会建议我从我的类中删除 @JsonIgnore
注释,但我需要它们在我的应用程序的某些部分中可以忽略。在我的应用程序的另一部分中,我需要在我的 json
字符串中包含这些 @JsonIgnore
带注释的字段。
最佳答案
您可以定义 SimpleBeanPropertyFilter 和 FilterProvider。
首先使用自定义过滤器注释您的类,如下所示:
@JsonFilter("firstFilter")
public class MyDtoWithFilter {
private String name;
private String anotherName;
private SecondDtoWithFilter dtoWith;
// get set ....
}
@JsonFilter("secondFilter")
public class SecondDtoWithFilter{
private long id;
private String secondName;
}
这就是动态序列化对象的方式。
ObjectMapper mapper = new ObjectMapper();
// Field that not to be serialised.
SimpleBeanPropertyFilter firstFilter = SimpleBeanPropertyFilter.serializeAllExcept("anotherName");
SimpleBeanPropertyFilter secondFilter = SimpleBeanPropertyFilter.serializeAllExcept("secondName");
FilterProvider filters = new SimpleFilterProvider().addFilter("firstFilter", firstFilter).addFilter("secondFilter", secondFilter);
MyDtoWithFilter dtoObject = new MyDtoWithFilter();
String dtoAsString = mapper.writer(filters).writeValueAsString(dtoObject);
关于java - 如何在Jackson ObjectMapper的序列化中添加@JsonIgnore注释字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672131/