2017-04-12 3 views
0

Ich habe ein Objekt (zum Beispiel eine Kugel), die bestimmte Daten Mitglieder und Funktionen in meinem Projekt verwendet, aber ich bekomme auch andere Bälle von verschiedenen Servern, die das Ball-Objekt veröffentlichen, aber in unterschiedlicher Hierarchie zum Beispiel:Mapping JSONs Bibliothek

class Ball { 
    int size; 
    string color; 
} 

So eine Instanz dieser Klasse in JSON wäre zum Beispiel:

{ ball: { 
size: 3, 
color: red 
}} 

aber das Problem ist, wenn ich eine andere Hierarchie des Balls bekommen, aber die Logik ist nach wie vor die Gleiches, zum Beispiel bekomme ich von anderen Servern ein Boll, die diese Datenelemente hat:

Class Boll{ 
int mass; 
View color; 
} 

Class View { 
string color; 
} 

würde eine Instanz der boll Klasse in JSON So werden zum Beispiel:

{ Boll: { 
mass: 3, 
view: { 
color: red 
}} 

können wir also sagen, dass diese beiden Klassen sehr ähnlich zueinander sind .

Als ich versuchte, dieses Problem zu lösen, machte ich eine Map<string, string> und legte jedes Attribut aus meiner Klasse mit der anderen Klasse, aber wenn ich mit komplexen Objekten (wie zum Beispiel Ansicht) kam, konnte ich nicht mit einer Idee kommen um dieses Problem zu lösen und in meinem Projekt handle ich mit einigen ernsthaften Objekten, so dass ich meine alte Lösung nicht mehr verwenden kann.

Antwort

0

Sie könnten ein einzelnes Kugel-Objekt in Ihrem Angular-Code haben:

class Ball { 
mass: Number; 
color: string; 
} 

Und von jeder unterschiedlichen Anforderung, da Sie das Format Karte der Dienste wissen Sie, in jeder Anfrage an das Objekt abbilden wie diese

public getBallsFromServerA(): Observable<Ball[]> { 
return this.http.get('ballUrlA') 
    .map(response => { let balls: Ball[] = response.json() 
    .map(val => { return { mass: val.size, color: val.view.color};}); 
return balls; 
}) 
+0

Meine Objekte sind viel komplizierter als die Beispiele, die ich hier geschrieben habe, das Objekt, das ich benutze, hat mehr als 300 verschiedene und sich ändernde Werte, also kann ich deine Lösung nicht verwenden: S –

+0

wie sonst wirst du machen es? –

+0

Ich dachte, es wird vielleicht eine Bibliothek geben, die das macht oder eine "Best-Practice" -Methode, das zu tun ... –

Verwandte Themen