2017-06-06 120 views
1

我正在使用Spring框架的spring-boot庫開發REST服務。 我收到我的服務作爲JSON的響應,我的問題是我正在使用父類來存儲作爲請求的結果發送的所有對象,併發送沒有名稱JSON數組上的響應。Spring Responsebody,json中的命名列表對象

這是我的測試一個輸出:

success: true, 
message: null, 
data: [ 
{ }, 
{ 
vehicleBatteryId: 3, 
modelTypeId: 3, 
cycleCount: -9640, 
currentCapacity: -9640, 
manufactureDate: 414037682000, 
manufacturerId: 10, 
modeTypeCode: 461271880, 
partStatus: 215692740, 
lastMaintenanceDate: 428880743000 
}, 
{ 
vehicleBmsId: 3, 
bmsModelId: 5, 
manufactureDate: 942436247000, 
manufacturerId: 4, 
lastMaintenanceDate: 437823118000, 
partStatus: 477293493, 
replaceDate: 179716409000, 
replaceDistance: 4783810 
}... 

這是我想要得到的結果:

success: true, 
message: null, 
data: { 
Property1:{ }, 
Property2:{ 
vehicleBatteryId: 3, 
modelTypeId: 3, 
cycleCount: -9640, 
currentCapacity: -9640, 
manufactureDate: 414037682000, 
manufacturerId: 10, 
modeTypeCode: 461271880, 
partStatus: 215692740, 
lastMaintenanceDate: 428880743000 
},... 

這是父類。我希望能夠利用它爲每一個響應我的服務創建,無論是響應

public class MasterResponse extends RequestStatus{ 
    private List<Object> data; 

    public MasterResponse() { 
     init(); 
    } 

    public MasterResponse(boolean _success, String _message){ 
     super(_success, _message); 
     init(); 
    } 
    private void init(){ 
     this.data = new ArrayList<Object>(); 
    } 

    public void addModel(Object newModel){ 
     this.data.add(newModel); 
    } 

    public void clearData(){ 
     this.data=null; 
    } 

    public List<Object> getData() { 
     return data; 
    } 

    public void setData(List<Object> data) { 
     this.data = data; 
    } 
} 

任何細節有什麼想法?據我可以告訴Spring使用Jackson轉換爲json,我正在探索我可以用他們提供的json視圖功能做什麼。

+1

你能解釋清楚,此行中我希望能夠使用它的每一個我的服務創建,無論是響應 –

+0

在我的案件的細節響應我用'我控制器上@ RestController'註釋和從該控制器返回「父對象」。他們工作得很好,並給出了所有班級的名字。 –

+0

@Rahul我有很多不同的模型,代表不同的返回類型。例如:車輛和公司。我想將它們添加到「MasterResponse」,無論它們是Vehicle類還是公司類。 –

回答

0

您正在使用ArrayList,其中Jackson序列化爲[{...},{...},...] 您可以使用Map(即HashMap <>)來處理數據,但您可能需要創建一個自定義的「push()」或add()函數,以保持索引的順序。即Property1。

在HashMap對象時便會序列化爲:數據:{ 「索引-1」:{...}, 「索引-2」:{...} ...}

簡單的例子爲您的代碼:

private Map<String, Object> data; 
    int nextIndex = 1; 

    private void init(){ 
     this.data = new HashMap<String, Object>(); 
    } 

    public void addModel(Object newModel){ 
      this.data.add("Property" + this.nextIndex, newModel); 
      this.nextIndex++; 
    } 
+0

這很簡單,完美地工作,謝謝 –