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在类型级别使用注释来设置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 回答