我如何不使用JAX-RS接口序列化对象的某些部分(子对象)



我有以下类:

class A {
    @JsonProperty("id")
    Integer id;
    @JsonProperty("b")
    B b;
    // constructors, getters, etc.
}
class B {
    @JsonProperty("id")
    Integer id
    // other properties ...
    @JsonProperty("c")
    C c;
    // getters and setters
}
class C {
    @JsonProperty("id")
    Integer id
    // other properties ...
    @JsonProperty("password")
    String password;
    // getters and setters
}

i在我的项目中,按B类和C级"自己" A类A类来自另一个项目(DOM中包含的JAR依赖性(。我通过调用REST接口来收集B的信息。与B一起,C来了,其中包含密码。

当我将A发送给用户时,所有对象都会序列化。这样,c(和密码(继续。

我该如何发送B,但省略C?

我无法更改B和C:

  1. 我不能将@jsonignore放在B级;
  2. b中没有setter,所以我不能a.getb((。setc(null(。

这是一个真正的问题:1.我可以在我的休息界面上输入任何注释(我使用Resteasy(,以便杰克逊可以在没有C类的情况下序列化?

  1. 或,如果没有,我该如何进行编码?

我不想创建另一个对象"类似于b,"并复制所有属性。应该有更好的方法(我希望(。

您可以使用com.fasterxml.jackson.annotation在" b":

上使用@jsonignoreproperties注释。
class A {
    @JsonProperty("id")
    Integer id;
    @JsonProperty("b")
    @JsonIgnoreProperties({"c"})
    B b;
    // constructors, getters, etc.
}

我希望它对您有帮助。

最新更新