23

かなり簡単な質問です。私はJerseyを使用してRESTシステムを構築しています。処理中に使用する必要がある値を持つクラスがあるが、クラスがマーシャリングされるときにXMLまたはJSON出力の一部として送信されたくない場合、それを無視する方法はありますか?何かのようなもの:

@XmlRootElement(name="example")
class Example {
    private int a;
    private String b;
    private Object c;

    @XmlElement(ignore=true)
    public int getA() { return a; }
    @XmlElement
    public String getB() { return b; }
    @Ignore
    public Object getC() { return c; }
    ... //setters, constructors, etc.
}

ignore=trueovergetA()@Ignoreoverのようなものが機能することを願っていgetC()ますが、ドキュメントが見つかりません。

4

1 に答える 1

36

無視するフィールド/プロパティの数に応じて、いくつかのオプションがあります。

オプション1 -@XmlTransient

プロパティの半分未満を無視したい場合は、それらに注釈を付けることをお勧めし@XmlTransientます。これにより、それらが XML マッピングから除外されます。

@XmlRootElement
class Example {
    private int a;
    private String b;
    private Object c;

    @XmlTransient
    public int getA() { return a; } // UNMAPPED

    public String getB() { return b; } // MAPPED

    @XmlTransient    
    public Object getC() { return c; } // UNMAPPED

    ... //setters, constructors, etc.
}

オプション #2 -@XmlAccessorType(XmlAccessType.NONE)

プロパティの半分以上を無視したい場合は@XmlAccessorType、タイプ レベルで注釈を使用して set することをお勧めしXmlAccessType.NONEます。これにより、注釈付きのプロパティのみが XML にマップされます。

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
class Example {
    private int a;
    private String b;
    private Object c;

    public int getA() { return a; } // UNMAPPED

    @XmlElement
    public String getB() { return b; } // MAPPED

    public Object getC() { return c; } // UNMAPPED

    ... //setters, constructors, etc.
}

詳細については

于 2012-10-25T13:43:40.737 に答える