-1
我想創建兩個不同的JSON文檔,每個文檔都包含5個字段。我有一個10個屬性的POJO類。我想用5個屬性形成json1,用5個屬性使用該POJO類形成json2。有什麼辦法來構建這些對象?將Java對象轉換爲具有特定字段的JSON
我想創建兩個不同的JSON文檔,每個文檔都包含5個字段。我有一個10個屬性的POJO類。我想用5個屬性形成json1,用5個屬性使用該POJO類形成json2。有什麼辦法來構建這些對象?將Java對象轉換爲具有特定字段的JSON
考慮編寫兩個單獨的包裝類,每個包裝類都暴露兩種情況下所需的字段,並將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的 - 有時像這樣的事情是有關您的代碼如何改進的提示。但這取決於具體情況,在這種情況下可能不適用。
作爲一種替代方法(少工作,但有點混亂)OP可以使用例如HashMap作爲中間容器來做同樣的事情。 – fvu
@fvu是的,公平點 - 我應該補充說,還是你想添加自己的答案? – SusanW
只要繼續,它只是您答案的變體,所以爲此創建另一個答案並沒有多大用處。 – fvu