1

Ich arbeite an einem REST-Service mit der Spring-Boot-Bibliothek von Spring Framework. Ich erhalte Antworten von meinen Diensten als JSON, mein Problem ist, dass ich eine Elternklasse verwende, um alle Objekte zu speichern, die als Ergebnis einer Anfrage gesendet werden, und die Antwort wird ohne Namen auf dem JSON-Array gesendet. Spring Responsebody, Objekte der Namensliste in JSON

Dies ist die Ausgabe für einen meiner Tests:

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 
}... 

Und das ist das Ergebnis ich zu bekommen habe versucht:

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 
},... 

Dies ist die Elternklasse. Ich will, um es für jede Antwort in der Lage meinen Dienst erstellt, unabhängig von den Details dieser Antwort

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; 
    } 
} 

Wer irgendwelche Ideen? So weit ich sagen kann, dass Spring Jackson zu json konvertiert, erkunde ich, was ich mit den json view-Funktionen machen kann, die sie im Moment bereitstellen.

+1

können Sie diese Zeile eindeutig erklären ich es in der Lage sein wollen, für jede Antwort erzeugt meinen Dienst unabhängig von den Details –

+0

ich auf meinem Controller verwendet '@ RestController' Anmerkung In meinem Fall dieser Antwort zu verwenden und "Elternobjekte" von diesem Controller zurückgegeben. Sie arbeiteten total gut und gaben alle Namen der Klassen. –

+0

@Rahul Ich habe viele verschiedene Modelle, die unterschiedliche Rückgabetypen darstellen. Zum Beispiel: Fahrzeuge und Firmen. Ich möchte sie zu einer "MasterResponse" hinzufügen, unabhängig davon, ob es sich um eine Fahrzeugklasse oder eine Unternehmensklasse handelt. –

Antwort

0

Sie verwenden eine Arraylist, die Jackson Serialisierung als [{...}, {...}, ...] Sie eine Karte verwenden könnte (dh HashMap <>) für Daten, aber Sie benötigen um eine benutzerdefinierte "push()" - oder add() -Funktion zu erstellen, um die Indexproperität zu erhalten. d.h. Eigenschaft1. Daten:

wil das HashMap Objekt als serialisiert wird { "Index-1": {...} "Index-2": {...} ...}

einfaches Beispiel für Ihre Code:

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

Es war so einfach, funktionierte perfekt, danke –

Verwandte Themen