首页 > 解决方案 > 如何为所有 POJO 类应用程序全局应用 @JsonIgnoreProperties(value = { "id" }) (jackson api)

问题描述

我有多个类,对于所有类,我不希望id字段成为我的输出 JSON 字符串(序列化)的一部分。假设我有 2 节课

@JsonIgnoreProperties(value = { "id" })
public final class Person {
 private ObjectId id;
  //........
}

@JsonIgnoreProperties(value = { "id" })
public final class Address{
 private ObjectId id;
  //........
}

现在我不想@JsonIgnoreProperties(value = { "id" })在我所有的 1000 个类上手动指定。有什么全局方法可以让我将这部分应用到我的所有课程中吗?非常类似于mapper.setSerializationInclusion(Include.NON_NULL)下面的方法?

public String serialize(T dataObject) throws IOException {
        ObjectMapper mapper = new ObjectMapper();   
        mapper.setSerializationInclusion(Include.NON_NULL);
        String result = mapper.writeValueAsString(dataObject);
        return result;
}

我尝试的一种方法是创建一个超类并在其之上应用@JsonIgnoreProperties(有效)。但是我仍然必须在我不喜欢的每个子类中写“扩展”。有什么方法可以应用此设置而不在我的 pojo 类中添加任何其他内容?

标签: javajacksonjackson-databind

解决方案


可能有更有效的解决方案,但您可能会使用排除不需要的字段但保留所有其他字段的默认编组器。


推荐阅读