2017-07-10 4 views
1

私はモデルを持っています。ジャクソン:1つのJsonViewクラスからフィールドを除外

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フィールドを見ることができるように、このモデルから作成され、すべてのJSONsに含まれます。

今、このモデルから作成されるすべてのJSON(たとえば、1つを除く)にフィールドレベルを入れたいと思います。

のようなものがありますか?@JsonView(!face.Example.class)?そうでない場合は、このケースの最適な解決策は何ですか?私はあなたがこれを達成するために、ビュークラスの継承を使用する必要があると考えてい

おかげでそんなに

答えて

0

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; 

    // ... 

}

あなただけの1つの分野以上に適用されるビューの論理的な階層構造を持っています。

関連する問題