我需要在通过@JsonIgnore
序列化对象时添加带有Jackson ObjectMapper
注释的字段。我知道您可以为我提供从类中删除@JsonIgnore
批注的方法,但是我需要它们在我的应用程序的某些部分可忽略。在我的应用程序的另一部分中,我需要在我的@JsonIgnore
字符串中包含那些带有json
注释的字段。
最佳答案
您可以定义一个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/