非常直截了当的问题。我正在使用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=true
超过getA()
或@Ignore
超过getC()
之类的东西可行,但我找不到文档。
答案 0 :(得分:34)
根据您想要忽略的字段/属性数量,有几个选项。
选项#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.
}
了解更多信息