2016-10-17 57 views

回答

3

考慮編寫兩個單獨的包裝類,每個包裝類都暴露兩種情況下所需的字段,並將pojo作爲構造函數arg傳遞。

因此,他們中的一個公開一組屬性,並可能是這樣的:

public class JsonObject1 { 
    private MyPojo myPojo; 
    public JsonObject1(MyPojo myPojo) { 
     this.myPojo = myPojo; 
    } 

    public void getProperty1() { 
     return myPojo.getProperty1(); 
    } 
    ...... 
} 

,另一個是類似的,但暴露性質的其他子集。或者,您可以添加兩個方法(可能添加到您的POJO,或者可能添加到暴露POJO的服務類),每個方法返回一個Map(例如,一個HashMap),您在其中複製了所需的特定屬性爲每個視圖,然後將這些地圖轉換爲JSON。這不是「模型驅動」,但可能整體上工作較少。感謝@fvu的觀察!

public Map<String, Object> getPojoAsMap1() { 
    Map<String, Object> m = new HashMap<>(); 
    m.put("property1", pojo.getProperty1()); 
    .... 
    return m; 
} 

這也有可能是兩個不同的JSON表示是想告訴你,你的POJO應該分成兩個POJO的 - 有時像這樣的事情是有關您的代碼如何改進的提示。但這取決於具體情況,在這種情況下可能不適用。

+0

作爲一種替代方法(少工作,但有點混亂)OP可以使用例如HashMap作爲中間容器來做同樣的事情。 – fvu

+0

@fvu是的,公平點 - 我應該補充說,還是你想添加自己的答案? – SusanW

+1

只要繼續,它只是您答案的變體,所以爲此創建另一個答案並沒有多大用處。 – fvu