gpt4 book ai didi

java - 具有递归结构的 jackson 序列化

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

我有 jackson 序列化的java模型:

@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="orderId")
public class ClonedOrder extends ResourceSupport implements Serializable{
private long orderId;
private ClonedOrder parent;
private List<ClonedOrder> children = new ArrayList<>();

@JsonProperty("root")
public ClonedOrder root() {
if (parent == null) {
return this;
} else {
return parent.root();
}
}

当 Jackson 序列化该树时,响应如下:

{
"orderId": 163811134,
"parent": {
"orderId": 153684020,
"parent": null,
"children": [],
"root": 153684020
},
"children": [
{
"orderId": 163811135,
"parent": 163811134,
"children": [],
"root": 153684020
},
"root": 153684020
}

问题在于,ClonedOrder 类型的根节点未序列化为 ClonedOrder(具有父级、子级和根),而仅将 id 序列化为 long 类型。

问题是我无法使用相同的模型进行序列化和反序列化,因为 json 从服务器到客户端发生了变化。

知道如何实现这个目标吗?

最佳答案

您可以使用两个注释@JsonManagedReference@JsonBackReference来处理双向引用。

看看here

关于java - 具有递归结构的 jackson 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41020309/

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