我正在使用注释@JsonIdentityInfo来使用它的id序列化/反序列化对象。
我实现了一个运行良好的ObjectIdResolver。
@JsonIdentityInfo(
generator = ObjectIdGenerators.PropertyGenerator.class,
property = "id", resolver = EntityIdResolver.class, scope = MyClass.class)
public class MyClass{....}
我找到了此注释的文档here。
我的问题是声明:“实际上,这是通过将第一个实例序列化为完整对象和对象标识,以及将对象的其他引用序列化为参考值来完成的。”
现在我的Rest-Endpoint返回类似于
的内容{
"itemList": [
{
"id": 70110,
"myClass": {
"id": 3,
"name": "itemName",
"date": "2000-01-01"
},
},
{
"id": 70111,
"myClass": 3,
}
]
}
但这意味着,客户端必须处理不同的数据类型。客户端确实知道所有对象,因此序列化无论是仅返回id还是完整对象都无关紧要。
如何阻止杰克逊使用此行为?
答案 0 :(得分:1)
最后很快找到了解决方案(至少对我的问题而言): 添加
@JsonIdentityReference(alwaysAsId = true)
到MyClass将始终将其视为
"myClass":3
我发现了here