我需要在通过@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/

10-14 20:55