2017-02-08 5 views
-1

Ich habe eine Methode in einer Angular 2-Anwendung geschrieben, die ein Observable einer Klasse erstellt und zurückgibt, nachdem ein Serveraufruf JSON zurückgegeben hat. Da der JSON jedoch schlecht formatiert ist, benötige ich einen Quick-Fix, um den zurückgegebenen JSON zu bearbeiten, bevor er an die .json()-Methode gesendet wird, die derzeit einen Fehler aufgrund des schlecht formatierten JSON auslöst.So ändern Sie die in RxJS gespeicherten Daten Observable?

Insbesondere muss ich ein fehlerhaftes Komma in der JSON finden, die nach der schließenden Klammer eines Arrays angezeigt wird, und entfernen Sie es.

Meine Frage

Was genau sollte, dass Observable.map Funktion aussehen? Wie finde und manipuliere ich die tatsächliche JSON-Zeichenfolge und sende sie dann mit? Ich bin neu in all dem, so dass Details geschätzt werden.

getList(): Observable<Thing[]> { 
    let response = this.http.get('/api/get-things'); 
    let fixed = response.map(____WHAT GOES HERE?_____); 
    return fixed.map((r: Response) =>r.json as Thing[]); 
} 
+2

Es ist nicht klar, was Sie meinen, aber es scheint wie eine andere Karte auf dem Observablen würde ausreichen. Entweder vor dem Aufruf der JSON-Methode, wenn Sie den Antworttext ändern müssen, oder nach, wenn Sie das resultierende Objekt ändern müssen. – jonrsharpe

+0

Vielen Dank für das Feedback. Ich habe die Frage bearbeitet, um weitere Details hinzuzufügen und genauer zu beschreiben, was ich möchte. –

+0

Was haben Sie versucht, dort zu setzen? Haben Sie versucht, einen Debugger oder nur die Konsole zu verwenden, um zu sehen, in welche Richtung Sie gelangen? Lesen Sie die Dokumentation zum Antwortobjekt? Bitte geben Sie ein [mcve] des spezifischen Problems. – jonrsharpe

Antwort

1

Sie Angenommen, eine fix Methode:

const fix = (json: string) => { 
    // ... 
} 

Sie so etwas tun könnte:

const things: Observable<Thing[]> = this.http.get('/api/get-things') 
    .map(response => response.text()) 
    .map(fix) 
    .map(fixedJson => JSON.parse(fixedJson) as Thing[]) 

aber es ist eine sehr schlechte Idee . Den serverseitigen Code korrigieren!

Verwandte Themen