【问题标题】:How to globally apply @JsonIgnoreProperties(value = { "id" }) for all POJO classes of application (jackson api)如何为所有 POJO 类应用程序全局应用 @JsonIgnoreProperties(value = { "id" }) (jackson api)
【发布时间】:2019-06-12 11:35:21
【问题描述】:

我有多个类,我不希望 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 类中添加任何其他内容?

【问题讨论】:

  • 感谢您的回复。我刚刚更新了我的描述。我不想去我的 pojo 课程并添加任何其他设置。我正在寻找全球性的东西。
  • 链接问题中的答案似乎应用了全局过滤器,还是我错过了什么?
  • 如果我做对了,我需要在每个 pojo 上应用 @JsonFilter 对吗???
  • 不,您似乎只需要添加 1 个单个类,从那里的示例:@JsonFilter("filter properties by name") class PropertyFilterMixIn {}。不过我不能保证

标签: java jackson jackson-databind


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2013-02-17
    • 2012-01-26
    • 1970-01-01
    • 2023-02-16
    相关资源
    最近更新 更多