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

我有一个 API,我可以调用它来获取一些 Json 对象。假设我有两种对象:A和B。


一个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对象。


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


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


@serialiazeUsingOnlyProperties({"property1", "property2"})

public B someB;

放入我的 A 对象。


慕容3067478
浏览 175回答 1
1回答

互换的青春

您可以使用@JsonIgnoreProperties. 注释通常用于类级别,但它也适用于字段。当应用于字段时,它用于忽略带注释的字段内的属性:@JsonIgnoreProperties({"colour", "size"})public B someB;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java