2012-10-25 18 views
20

Oldukça basit bir soru. Bir REST sistemi kurmak için Jersey kullanıyorum. Eğer işlem sırasında kullanmam gereken bir değere sahip bir sınıfım varsa, ancak sınıf kümelendiğinde XML veya JSON çıktısının bir parçası olarak göndermek istemiyorsam, onu görmezden gelmenin bir yolu var mı? Ben getA() üzerinde ignore=true veya @IgnoregetC() üzerinde şey gibi çalışacak umut ediyorum, ama hiçbir belgeleri bulabilirsinizJersey/JAX-RS ek açıklamaları XML/JSON'a marshalling yaparken bir sınıf üyesini atlamak için kullanılabilir mi?

@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. 
} 

: gibi bir şey.

cevap

32

Kaç tane alan/özellik göz ardı edilmek istediğinize bağlı olarak birkaç seçenek vardır.

Seçenek # 1 - @XmlTransient

sonra ben @XmlTransient onları annotating öneriyoruz göz ardı edilecek özelliklerin yarısından daha az istiyorum. Bu onları XML haritalarından çıkarır.

@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. 
} 

Seçenek # 2 - @XmlAccessorType(XmlAccessType.NONE)

sana XmlAccessType.NONE ayarlamak için tür düzeyinde @XmlAccessorType ek açıklama kullanarak öneriyoruz gözardı özelliklerin yarısından fazlasını istiyorum. Bu, yalnızca açıklamalı özelliklerin XML ile eşlenmesini sağlar. Ayrıntılı Bilgi İçin

@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. 
} 

+1

Güzel! Çok teşekkürler. –

+1

Yaptığım gün teşekkürler –