如何为所有POJO应用程序类(jackson api)全局应用@JsonIgnoreProperties(value = {“ id”})

时间:2019-01-18 08:18:40

标签: java jackson jackson-databind

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

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

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

现在,我不想在我的所有1000个班级上手动指定@JsonIgnoreProperties(value = { "id" })。有什么全球性的方法可以使我将这一部分应用于我所有的课程吗?类似于下面方法中的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类中添加任何其他内容?

1 个答案:

答案 0 :(得分:0)

可能有一种更有效的解决方案,但是您可以使用默认的编组器覆盖该编组器,该默认编组器不包括不需要的字段,但保留所有其他字段。