使用RESTlet,XStream注释似乎没有任何效果

cha*_*815 11 java xstream restlet

在我的POJO中使用@XStreamOmitField似乎没有任何效果.带注释的字段仍然以xml或json表示形式公开.

@XStreamAlias("Pojo")
@Entity
public class Pojo {
    private String name;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long key;

    @XStreamOmitField
    private String hidden;

    public Pojo(String name, String hidden) {
        this.name = name;
        this.hidden = hidden;
    }
}
Run Code Online (Sandbox Code Playgroud)

并在ServerResource中

@Get
public Pojo test() {
    Pojo pj= new Pojo("hansi","hinter");
    return pj;
}
Run Code Online (Sandbox Code Playgroud)

抓住我

<com.myComp.ORMTest.Pojo>
  <name>hansi</name>
  <hidden>hinter</hidden>
</com.myComp.ORMTest.Pojo>
Run Code Online (Sandbox Code Playgroud)

任何关于注释被忽略的想法?

dli*_*120 15

您必须告诉XStream显式处理注释:

XStream xstream = new XStream();
xstream.processAnnotations(MyClass.class);
Run Code Online (Sandbox Code Playgroud)

或者,您应该添加此代码以告知XStream处理所有注释:

xstream.autodetectAnnotations(true);
Run Code Online (Sandbox Code Playgroud)

  • 只是对其他搜索者的说明:注释的自动检测仅适用于序列化,*不适用于*反序列化。您必须处理每个类(或它们的数组)才能解析 XML。 (2认同)