res.json()HttpClient响应

时间:2019-02-21 03:23:30

标签: json angular httpclient response

我意识到新的更新不需要将响应转换为JSON。

我要关注的教程将其放入api.service.ts

export class ApiService {

  constructor(private http: HttpClient){}

  messages = []
  getMessage(){
    this.http.get('http://localhost:3000/newroute').subscribe(res =>{
      this.messages = res.json()
    })
  }

}

但是,对于新的更新,“ res.json()”不起作用。我收到以下错误:类型'Object'不存在属性'json'。

我该如何解决?

这是我要遍历的数据:

var posts = [
{message:'Hello World'},
{greeting:'Whats going on'}
]

3 个答案:

答案 0 :(得分:0)

Angular允许您执行type checking on the response。您不必手动解析JSON。

以下是您示例中的代码段(我建议使用类型):

messages: Message[] = []
getMessage() {
  this.http.get<Message[]>('http://localhost:3000/newroute').subscribe((res: Message[]) => {
    this.messages = res;
  });
}

(更新)

根据您提供的数据,Message的界面可能如下所示:

export interface Message {
  [s: string]: string;
}

但是,如果“消息”只能具有诸如“消息”和“问候”之类的特定键,那么您也可以将其中任何一个添加为可选属性。

export interface Message {
  message?: string;
  greeting?: string;
}

答案 1 :(得分:0)

HttpClient仅为您提供json对象,因此无需再次执行.json()。因此请执行以下代码为您工作

getMessage(){
  this.http.get('http://localhost:3000/newroute').subscribe(res =>{
  let messages: any = res;
  this.messages = messages;
  })
}

答案 2 :(得分:-1)

只需:

getMessage(){
  this.http.get('http://localhost:3000/newroute').subscribe(res =>{
  this.messages = res;
  })
}