具有include/exclude属性的JSONView注释



我有一个用例,其中使用带有排除信息的JSONView注释似乎更合适,例如:

@JSONView(Views.Report1.class, include=false)

到目前为止,Jackson(1.9.2)还不直接支持这一点(包括属性),因为我想知道Jackson是否有一个简单的变通方法来实现这一点。

用例:

  • Report1:此视图应具有id, name, info1, info2, info3, info4属性
  • Report2:此视图应具有id, name, info1, info2, info4属性
  • 报告[3..]说许多其他观点也是可能的
private int id;private字符串名称;private字符串info1;private字符串info2;//忽略if view=report2@JsonView(ReportViews.Report2.class,include=false)private字符串info3;private字符串info4

我的用例是排除基于视图的属性(或者说报表ID)。使用JSONView方法,我需要将除Report2之外的所有视图添加到info3属性中,以将其排除在外。不太合身。

在这种情况下,正确的方法应该是什么?如果没有类似的解决方案,那么将JSONView自定义为排除/包含将是正确的解决方案。

似乎没有办法以这种方式从特定视图中排除字段。

但是,通过使用接口从所需元素组成视图,可以非常灵活地构建视图。

在上面的情况下,我会尝试这个:

public class ReportViews {
public interface NeedsInfo3 {};
public static class Report1 implements NeedsInfo3 {};
public static class Report2 {};
}

然后在模型中使用特定于字段的视图。

private int id;
private String name;
private String info1;
private String info2;
@JsonView(ReportViews.NeedsInfo3.class)
private String info3;
private String info4;

Jackson的JSON视图功能基于包含标准,因此您不能更改现有的注释。

最新更新