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

时间:2018-08-29 13:00:11

标签: java json serialization jackson ebean

我有一个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序列化某些比例而不是其他比例。我还知道如何通过添加:

将对象序列化为另一个对象的一部分时仅将其序列化为id
 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
 @JsonIdentityReference(alwaysAsId = true)
 public B someB;

到我的A对象。

但是对于我一生来说,我无法弄清楚如何{@ 1}对象作为其B AND 我选择的其他属性来序列化,并且只有何时将其序列化为id对象的一部分。

我正在寻找类似这样的注释:

A

放入我的A对象。

1 个答案:

答案 0 :(得分:0)

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

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