我具有由傑克遜序列化此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