2017-08-10 7 views
3

Wenn ich ungültige Daten aus einer HTTP-Anforderung erhalten die neue Httpclient in Angular 4.3.3, wie diese (Fremd Kommata) mit:
Angular 4.3.3 Httpclient JSON-Parsing-Fehler, GET gibt nur null

{ 
    "a": "it is a", 
    "b": "it is b",, 
} 

ich keine Fehler, und das Ergebnis ist null

this.httpClientNew.get<any>('assets/mockjson.json').subscribe(
    (response) => {console.log("NEW RESPONSE:[" + response + "]")}, 
    (error) => {console.error(error)} 
) 

den alten Client verwenden kann ich die JSON Parsing-Fehler einschließlich der genauen Charakter zu bekommen, wo das Problem ist:

this.httpClientOld.get('assets/mockjson.json').map(
    (response) => {console.log("OLD RESPONSE:[" + response + "]"); 
    return response.json(); 
    } 
).subscribe(
    (res) => {console.log(res)}, 
    (err) => {console.error(err)} 
) 

, die den schönen Fehler gibt:

SyntaxError: Unexpected token , in JSON at position 39 

Gibt es eine Möglichkeit, diese detaillierte Fehlermeldung mit dem neuen Schräg 4.3.3 Httpclient zu bekommen? Danke.

Antwort

2

Die grundlegende Antwort ist "Nein".

Von jemand auf dem Angular Team:

"HttpClient delegates parsing to the browser. That doesn't report errors."

Also, was getan zu werden ist, wenn man eine große Menge an Json ruft nur null zurück zu bekommen? Gibt es eine Möglichkeit zu wissen, dass es sogar ein Parsing-Fehler und kein Server-Problem war, wenn alles, was wir zurückbekommen, null ist? Alle offenen Fragen.

Vielleicht müssen wir ein Problem auf Github für weitere Diskussion starten? https://github.com/angular/angular/issues

1

können Sie beobachten, wenn Sie in der ganzen Antwort interessiert sind:

this.http.get('…', { observe: 'response' }); 

Hoffe, es hilft.