有沒有讓Gson處理嵌套對象與頂層不同的一種理智方法?要序列化的東西是實體,它們都有一個id
。一個嵌套的實體應該被它的id
取代(以縮短輸出並可能對抗無盡的遞歸)。使Gson的行爲具有深度依賴性
比方說,有一個
@AllArgsConstructor class User {
int id;
String name;
User parent;
}
和我執行
User grampa = new User(3, "Grampa", null);
User homer = new User(2, "Homer", grampa);
User bart = new User(1, "Bart", homer);
我能得到什麼,當序列化bart
是
{
id: 1,
name: "Bart",
father: {
id: 2,
name: "Homer",
father: {
id: 3,
name: "Grampa"
}
}
}
比我需要更多。我其實從來不想序列化嵌套實體,它們的id
就足夠好了。
使用
全球
線程局部變量的黑客和TypeAdapterFactory
我可以得到
{
id: 1,
name: "Bart",
father: 2,
}
這是我想要什麼差不多。我更喜歡fatherId
到father
,我肯定更喜歡比全局變量更簡單的東西。
我不想創建DAO,反射或類似地掃描對象(然後我可以自己完成整個序列化,不是嗎?)。
我有一個很難理解的轉變。感覺好像很多信息都消失了。 –
@SotiriosDelimanolis現在好多了? – maaartinus
你想爲傑森的[對象標識](http://wiki.fasterxml.com/JacksonFeatureObjectIdentity)爲Gson嗎? Gson擴展[GraphAdapterBuilder](http://stackoverflow.com/q/10036958/880772)讓你有點這樣做。 – approxiblue