2015-10-18 44 views
0

我在JSON中使用傑克遜到java.It正常工作正常。如何反序列化與傑克遜解包的json?

但是,我有一個問題。

我的大多數json將包含常見的字段,如狀態和描述以及幾個不斷變化的字段。

我在考慮將通用字段放入一個單獨的類中,並將其對象包含到所有類中,但它不能以這種方式工作,因爲傑克遜無法忽略這兩個字段需要設置在其他對象中。

Class login { 
    private String name; 
    private Response response; 
    /* getters and setters*/ 
} 

Class Response { 
    private String status; 
    private string description; 
    /* getters and setters*/ 
} 

這不會對JSON

{ 
    "name": "", 
    "status": "", 
    "description": "" 
} 

請建議,以實現它。我能想到的只有acchieve它繼承的最好的方式工作。

+0

感謝康納..只是提及我不會喜歡使用我自己的Objectmapper,因爲我必須爲所有類都做。 – Smiles

+0

只是看着如何通過使用兩個類來處理json到java的{name:「」,status:「」,description:「」} ...所以我不必爲每個響應類添加狀態和描述 – Smiles

回答

2

更改您的JSON如下所示:

{ 
    "name": "", 
    "response": { 
     "status": "", 
     "description": "" 
    } 
} 

,或者如果你不能改變JSON然後改變你的類:

abstract class Response 
{ 
    private String status; 
    private String description; 
} 


class Login extends Response 
{ 
    private String name; 
} 

如果你改變了JSON以你現在的代碼才起作用我上面寫的那個。

+0

謝謝梅達。我希望我可以。我正在迴應並不能改變它。但我喜歡這個建議。理想上這個服務應該是這樣編碼的。 – Smiles

+0

我可能正在尋找一種解決方案,如果沒有繼承或客戶端映射器,這可能是不可能的......但是想要討論 – Smiles

+0

@Smiles好吧,我更新了,沒有測試,我更像是GSON用戶,如果它不起作用試圖讓他們公開 – meda