【问题标题】:Jackson: exclude field from one JsonView class杰克逊:从一个 JsonView 类中排除字段
【发布时间】:2017-07-10 08:14:19
【问题描述】:

我有一个模型。

public class Model {
    @JsonProperty("model_id")
    private Integer id;
    @JsonView(face.Test.class)
    @JsonProperty("model_name")
    private String name;
    @JsonProperty("model_level")
    private Byte level;
    @JsonView(face.New.class)
    @JsonProperty("model_score")
    private Byte score;
    @JsonView(face.Test.Tester.class)
    @JsonProperty("model_community")
    private Long community;

    //getter and setters
}

如您所见,我的 idlevel 字段将包含在从此模型创建的所有 JSON 中。

现在我想在除一个之外的所有 JSON(从该模型创建)中放置例如字段级别。

有类似 @JsonView(!face.Example.class) 的东西吗?如果不是,这种情况的最佳解决方案是什么?

非常感谢

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    我相信您需要使用视图类继承来完成此操作。

    public class face {
      public static class BaseView {}
      public static class Test extends BaseView {}
      public static class New extends BaseView {}
      public static class Example {} // no parent
    }
    

    所以:

    public class Model {
    
      // included in all views
      private Integer id;
    
      // only in Test view
      @JsonView(face.Test.class)
      private String name;
    
      // included in BaseView and its children (ie not Example)
      @JsonView(face.BaseView.class)
      private Byte level;
    
      // ...
    

    }

    大概您有一个视图的逻辑层次结构,不仅适用于一个字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      相关资源
      最近更新 更多