【发布时间】: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