使用 jackson,当 ebean 对象是另一个对象的一部分时,如何仅序列化它的某些 属性

With jackson, how to serialize only some property of an ebean object when it is part of another object

我有一个 API 我可以调用它来获取一些 Json 对象。假设我有两种对象:AB .

一个A对象在其实例变量中有一个B对象。当我调用 API 得到 someB 时,我想要以下结果:

{
  id: 234,
  name: theBName,
  colour: theBColour,
  size: 123
}

但是当我调用 API 得到 someA 时,我想要以下结果:

{
  id: 456,
  type: someAType,
  b: {
    id: 234,
    name: theBName
  }
}

如您所见,我的 B 对象在第二种情况下只有部分属性。

我找到了如何使用 jsonViews 序列化一些属性而不是其他属性。我也知道如何通过添加 :

 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
 @JsonIdentityReference(alwaysAsId = true)
 public B someB;

我的 A 对象。

但是对于我来说,我无法弄清楚如何将这个 B 对象序列化为它的 id AND 我的其他属性当且仅当它被序列化为 A 对象的一部分时的选择。

我正在寻找类似注释的内容:

@serialiazeUsingOnlyProperties({"property1", "property2"})
public B someB;

放入我的 A 对象。

您可以使用 @JsonIgnoreProperties。注释通常用于 class 级别,但它也适用于字段。当应用于字段时,它用于忽略注释字段内的属性:

@JsonIgnoreProperties({"colour", "size"})
public B someB;