使用 jackson,当 ebean 对象是另一个对象的一部分时,如何仅序列化它的某些 属性
With jackson, how to serialize only some property of an ebean object when it is part of another object
我有一个 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
序列化一些属性而不是其他属性。我也知道如何通过添加 :
@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;
我有一个 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
序列化一些属性而不是其他属性。我也知道如何通过添加 :
@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;