java - 使用杰克逊,当它是另一个对象的一部分时,如何仅序列化 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 对象。
解决方案
您可以使用@JsonIgnoreProperties
. 注释通常用于类级别,但也适用于字段。当应用于字段时,它用于忽略带注释的字段内的属性:
@JsonIgnoreProperties({"colour", "size"})
public B someB;
推荐阅读
- javascript - 重新加载动画(切换菜单)JS
- ajax - 文件的 AJAX URL 问题
- java - 如何使用 Tomcat 在 Java Spring 项目中打开文件
- python - 基于变量名声明函数名的更好方法?
- r - 通过将用户定义的函数应用于一组向量来创建矩阵
- javascript - 通过 JavaScript 在 html 表中显示和隐藏 PHP 脚本中的内容
- c - 这个声明 (x=0.12378e+3) 如何表示 123.8?
- java - 欧元货币输入 EditText Android
- c - 浮点函数返回 1.#R
- python - 找到总和最大的对,使得第二个元素在第一个之后