位于1813的JSON中的意外标记

时间:2017-02-04 15:55:43

标签: angular

请帮助解决

  

位于1813的JSON中的意外标记

我的代码如下所示:

GetAllAnalysisStatuses(): void {   
   this.http.get('http://localhost:9090/analytics/analysisStatuses')
    .subscribe(result => { console.log(result); 
     this.AnalysisStatuses = result.json().data;
    });
}

我的JSON看起来像这样:

[ { "analysisId": 1, "analysisName": "01 consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et ", "analysisTypeName": "Lorem ipmod tempor ", "analysisStatus": "CREATED", "comments": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", "pirorityIncreasable": true, "isFavourite": true, "scenariosStatus": [] } ]

我试过了:

public GetAllAnalysisStatuses = (): Observable<any> => { 
    console.log("(TS File) :CommonService.ts >>> (Method): GetAllAnalysisStatuses >");
    return this._http.get(this.actionUrl + 'analysisStatuses' ) 
      .map((response) => { console.log("GetAllAnalysisStatuses", response); 
      var result: ServerResponse = response.json(); 
      return result; })
      .catch(this.handleError); }

1 个答案:

答案 0 :(得分:0)

您应该将result.json().data更改为:

result.json()

你的json建议你的json中没有data个对象,而是一个数组,我假设你要填充到AnalysisStatuses

通常我们使用map来首先在进行http调用的服务中映射数据,因此您可以尝试:

GetAllAnalysisStatuses(): void {   
   this.http.get('http://localhost:9090/analytics/analysisStatuses')
     .map(res => res.json())
     .subscribe(result => { 
        console.log(result); 
        this.AnalysisStatuses = result;
    });
}
编辑:看看您对代码的评论,我并不完全了解该代码的用途。请查看 HTTP-tutorial 如何进行http通话!我推荐那里的所有教程,它们真的很棒!

此外,当你处理好这个问题时......

在视图{{AnalysisStatus?.id}}"*ngIf="AnalysisStatuses"中使用安全导航操作符,因为这是异步的,安全导航操作符或*ngIf可确保应用不会抛出错误,因为在数据到达之前(通常)呈现视图。

有关安全导航运算符 here 的更多信息以及代码的工作 plunker 。今天感觉非常好,并提供了一个工作样本;)

旁注......我建议你有一个服务处理它,然后在组件中进行订阅,而不是在组件中进行http调用。