我具有由杰克逊序列化此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();
}
}
当杰克逊序列化此树的响应是如下:
{
"orderId": 163811134,
"parent": {
"orderId": 153684020,
"parent": null,
"children": [],
"root": 153684020
},
"children": [
{
"orderId": 163811135,
"parent": 163811134,
"children": [],
"root": 153684020
},
"root": 153684020
}
的问题是,根节点那是ClonedOrder类型不是序列化为一个ClonedOrder(与父,子和根),但只有与作为长类型的id。
问题是我不能使用相同的模型进行序列化和反序列化,因为json从服务器更改为客户端。
任何想法如何实现这一目标?
JSON只能包含值;该格式没有任何引用对象的定义。 JSON无法处理对象引用中的表示循环。您需要根据这些约束来设计您的API和JSON模型,并相应地编写您的客户端和服务器代码。 – dsh