gpt4 book ai didi

java - Jackson 总是序列化完整对象或总是只序列化 id

转载 作者:行者123 更新时间:2023-11-30 06:10:15 25 4
gpt4 key购买 nike

我正在使用注释 @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 或完整对象并不重要。

如何防止 jackson 使用这种行为?

最佳答案

终于很快找到了解决方案(至少对于我的问题):添加

@JsonIdentityReference(alwaysAsId = true) 

to MyClass 将始终序列化为

"myClass":3

我找到了这个here

关于java - Jackson 总是序列化完整对象或总是只序列化 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50406838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com