Подтвердить что ты не робот

Можно ли использовать аннотации Джерси /JAX -RS, чтобы пропустить член класса при сортировке XML/JSON?

Довольно простой вопрос. Я использую Джерси для создания системы 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=true over getA() или @Ignore over getC() будет работать, но я не могу найти документацию.

4b9b3361

Ответ 1

Есть несколько вариантов в зависимости от того, сколько полей/свойств вы хотите игнорировать.

Вариант №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 на уровне уровня для установки 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.
}

Дополнительная информация