我有一个名为Report的类,我需要使用RESTful WS共享。
通常我会使用类似@XmlTransient
的东西来隐藏字段,但这会阻止完整版本的工作。
有没有办法在输出之前设置条件或类型的预过滤字段,以便它不会影响同一类的其他用途?
我的Report类看起来像这样:
public class Report {
private String reportId;
private String title;
private String content;
private Date created;
private Date modified;
...
}
完整报告的RESTful共享如下所示:
@GET
@Path("/{reportId}")
public Report getReport(@PathParam("reportId") String reportId) {
return Mock.getReport(reportId);
}
我需要的完整输出如下所示:
{
"reportId": "d83badf3",
"title": "The tales of lamaru",
"content": "When once the great Imgur started his journey...",
"created": 1519672434866,
"modified": 1519672434866
}
我需要的短输出应该是这样的:
{
"reportId": "d83badf3",
"title": "The tales of lamaru"
}
有什么必要来实现这一目标?
你为什么不使用继承?
亲
public class Report {
private String reportId;
private String title;
}
儿童
public class FullReport extends Report{
private String content;
private Date createdp;
private Date modified;
}
当你需要完整的报告集返回类型为FullReport
否则Report
当您想要从JSON序列化和反序列化过程中排除某些类成员时,Jackson有两种不同的注释。这两个注释是@JsonIgnore和@JsonIgnoreProperties。 @JsonIgnoreProperties是类级别的注释,它期望排除的属性将以字符串列表的形式显式指示。 @JsonIgnore是一个成员级或方法级注释,它期望被排除的属性逐个标记。
试试这个。
public class Report {
private String reportId;
private String title;
@JsonIgnore
private String content;
@JsonIgnore
private Date created;
@JsonIgnore
private Date modified;
...
}