java - 如何在Jackson ObjectMapper的序列化中添加@JsonIgnore注释字段

标签 java json serialization jackson

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

相关文章:

java - 将 XText 模型实例序列化和反序列化为 OutputStream

java - 如何使用高性能解析器在 Java 中解析 JSON?

java - Spring Integration 未公开 WSDL

javascript - 第一个技巧,就是 errorHandler

json - Alamofire 和 SwiftyJSON 在请求函数之外获取值

java - 如何为 Jackson 编写一个包罗万象的(反)序列化器

java - 如何在 Web 服务中序列化公共(public)静态最终字符串?

java - 链表是抽象数据类型还是数据结构?

java - 无法检索日期

javascript - 在 cookie 中存储和检索 json 对象