2012-12-04 12 views
5

を除外含ま(1.9.2)のように、私はジャクソンでこれを達成するための簡単な回避策があるのだろうかと思います。JSONViewアノテーションは/私は例えば、排他情報をJSONViewアノテーションを使用する方が適切と思わユースケースがきた属性

ユースケース:

  • レポート1:id, name, info1, info2, info3, info4を持つ必要があります。このビューは
  • 報属性:id, name, info1, info2, info4を持つ必要があります。このビューは
  • レポート属性[3 ..]他の多くのビューが可能であると言う
 
private int id; 
    private String name; 
    private String info1; 
    private String info2; 
    //ignore if view=report2 
    @JsonView(ReportViews.Report2.class , include=false) 
    private String info3; 
    private String info4; 

私のユースケースでは、ビューに基づく属性を除外しています(またはレポートIDと言っています)。 JSONViewのアプローチでは、Report2以外のinfo3属性にすべてのビューを追加して除外しなければなりません。うまく収まらない。

このシナリオで正しいアプローチは何でしょうか?除外/除外を除いてJSONViewをカスタマイズしていますが、すでに利用可能なものと似ていないのであれば、正しい解決策になります。

答えて

1

ジャクソンのJSON View機能は、組み込みの基準に基づいているため、既存の注釈を変更することはできません。

2

フィールドを特定のビューから除外する方法はありません。

しかし、インターフェイスを使用して必要な要素からビューを構成することによって、ビューを非常に柔軟に構造化できます。フィールドの特定のビューを使用して、モデルに続いて

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; 
+0

おかげで、右の除外は、直接ことはできません、私最終的に拡張された 'Jackson'のfunctionlity、サンプルのユースケースの一つは次のようである:' @ReportView(パーマ= {Permission.ShowX、パーミッション。 ShowY、..}、anyPerm = false | true、条件= "reflectiveConditionMethod"、include = false | true) ' – harsh