Ich versuche, Django Antwort auf Angulare User
Array zu transformieren. Es gibt mehrere Gründe, z. B. verschiedene Variablennamen (first_name
vs firstName
) und einige Logik innerhalb Angular User
Konstruktor.Wie JSON-Objekte in TS-Klasse umgewandelt werden
Einfach Django User
=> Angular User
Beispiel für Serverantwort:
[
{"id":2,"email":"[email protected]","first_name":"Name 1","client":{"id":1}}},
{"id":3,"email":"[email protected]","first_name":"Name 2","client":{"id":2}}}
]
Was ich will, ist in dieses Format zu transformieren:
export class User {
// contructor that transforms
id: number;
email: string;
firstName: string;
isClient: boolean = false;
}
Ich habe dies zur Zeit " gelöst ", aber ich frage mich, ob es dafür eine bessere Lösung gibt. Innen something.service.ts
public getClients(): Observable<User[]> {
return this.http.get(this.getClientsUrl)
.map(r => r.json() || []).map(x => x.map(y => new User(y)));
}
Wenn ich eine bessere Lösung sagen, während dies funktioniert, es sieht nicht sehr gut lesbar. Kein Problem, wenn Sie dies einmal tun, aber wenn Sie viele Anfragen haben, denken Sie über eine bessere Lösung nach (eine Methode, um damit umzugehen?). Was wäre ein besserer Weg? So etwas wie
return this.http.get(this.getClientsUrl)
.map(transformResponse);
Gibt es einen Grund, dass Sie dies über eine Klasse anstelle einer Schnittstelle definieren möchten? –