Java 对于jackson,当一个ebean对象是另一个对象的一部分时,如何只序列化它的某些属性
我有一个API,可以调用它来获取一些Json对象。假设我有两种对象:Java 对于jackson,当一个ebean对象是另一个对象的一部分时,如何只序列化它的某些属性,java,json,serialization,jackson,ebean,Java,Json,Serialization,Jackson,Ebean,我有一个API,可以调用它来获取一些Json对象。假设我有两种对象:A和B A对象的实例变量中有一个B对象。当我调用API以获取someB时,我希望得到以下结果: { id: 234, name: theBName, colour: theBColour, size: 123 } { id: 456, type: someAType, b: { id: 234, name: theBName } } 但是,当我调用我的API以获取someA时,
A
和B
A
对象的实例变量中有一个B
对象。当我调用API以获取someB
时,我希望得到以下结果:
{
id: 234,
name: theBName,
colour: theBColour,
size: 123
}
{
id: 456,
type: someAType,
b: {
id: 234,
name: theBName
}
}
但是,当我调用我的API以获取someA
时,我希望得到以下结果:
{
id: 234,
name: theBName,
colour: theBColour,
size: 123
}
{
id: 456,
type: someAType,
b: {
id: 234,
name: theBName
}
}
如您所见,在第二种情况下,myB
对象仅具有其部分属性
我发现如何使用jsonViews
序列化一些比例,而不是其他比例。我还知道,当将一个对象序列化为另一个对象的一部分时,如何通过添加以下内容将其仅序列化为其id
:
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
@JsonIdentityReference(alwaysAsId = true)
public B someB;
到我的对象
但就我的一生而言,我不知道如何将这个B
对象序列化为它的id
以及我选择的其他属性,当且仅当它被序列化为A
对象的一部分时
我正在寻找类似这样的注释:
@serialiazeUsingOnlyProperties({"property1", "property2"})
public B someB;
放入我的A对象。您可以使用@JsonIgnoreProperties
。注释通常用于类级别,但也适用于字段。应用于字段时,用于忽略注释字段内的特性:
@JsonIgnoreProperties({"colour", "size"})
public B someB;
哦,这是一个很好的答案。我将按照SO的要求等待15分钟进行验证,但这确实解决了我的问题!使用白名单要比使用黑名单容易(我需要10或12个属性),但这就可以了!非常感谢。仅供参考:似乎还不支持白名单属性,但将来将支持: