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

Sha*_*ank 6 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;
  //........
}
Run Code Online (Sandbox Code Playgroud)

现在我不想@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;
}
Run Code Online (Sandbox Code Playgroud)

我试过的一种方法是创建一个超类并在其上应用@JsonIgnoreProperties(可行).但是我还是要在每个孩子课上写"延伸",这是我不喜欢的.有没有什么方法我可以应用这个设置而不在我的pojo类中添加任何额外的东西?

rax*_*tul 0

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