Angular 4.3.3 HttpClient JSON解析错误,GET只返回null

时间:2017-08-10 18:35:44

标签: angular http

如果我使用Angular 4.3.3中的新HttpClient从HTTP请求中获取无效数据,例如此(无关的逗号):

{
  "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

有没有办法使用新的Angular 4.3.3 HttpClient获取此详细错误消息? 感谢。

2 个答案:

答案 0 :(得分:3)

基本答案是“不”。

来自Angular团队的人员:

  

“HttpClient将解析委托给浏览器。这不会报告   错误“。

那么,如果只检索大量Json以获得null,该怎么办呢?有没有办法知道它甚至是一个解析错误而不是服务器问题,如果我们所有回来的都是null?所有未解决的问题。

也许我们需要在github上为此开始一个问题以供进一步讨论? https://github.com/angular/angular/issues

答案 1 :(得分:1)

如果您对整个响应感兴趣,可以使用观察

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

希望它有所帮助。