2017-08-10 30 views
3

如果我使用新的HttpClient在角4.3.3從HTTP請求無效數據,像這樣的(無關的逗號):
角4.3.3 HttpClient的JSON解析錯誤,得到的只是返回null

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

我沒有得到任何錯誤,其結果是null

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

使用舊的客戶端,我可以得到JSON解析錯誤,包括精確的字符是哪裏的問題:

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

這給友好的錯誤:

SyntaxError: Unexpected token , in JSON at position 39 

是否有一種方式來獲得新角4.3.3的HttpClient此詳細的錯誤信息? 謝謝。

回答

2

基本答案是「否」。

從別人的角度團隊:

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

那麼,什麼是如果一個人獲取大量的JSON只得到null回做什麼?有沒有辦法知道它甚至是解析錯誤,而不是服務器問題,如果我們回來的是null?所有未決問題。

也許我們需要在github上爲這個問題啓動一個問題以供進一步討論? https://github.com/angular/angular/issues

1

您可以使用觀察如果你有興趣在整個響應

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

希望它能幫助。