gpt4 book ai didi

jaxb - 在编码到 XML/JSON 时,是否可以使用 Jersey/JAX-RS 注释跳过类成员?

转载 作者:行者123 更新时间:2023-12-03 11:52:19 25 4
gpt4 key购买 nike

很直接的问题。我正在使用 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()@IgnoregetC()会工作,但我找不到任何文件。

最佳答案

根据您要忽略的字段/属性的数量,有几个选项。

选项 #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.
}

更多信息
  • http://blog.bdoughan.com/2012/04/jaxb-and-unmapped-properties.html
  • 关于jaxb - 在编码到 XML/JSON 时,是否可以使用 Jersey/JAX-RS 注释跳过类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069729/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com