更改Angular HTTP响应类型

时间:2018-02-03 18:27:03

标签: angular ionic-framework angular-httpclient

我使用角度为5的离子骨架3.9。 当我向返回json的后端发送请求时,Angular会返回ArrayBuffer

以下是代码:

this.http.get(this.url, {responseType: 'json'}).subscribe(data => console.log(data);

如果我改变

this.http.get

通过

this.http.get<T>

或其他任何东西,有角度的给我HttpEvent<T>

所以来自后端的响应是JSON对象数组。 我怎么能改变httpclient给出的响应类型?我不想要一个ArrayBuffer。我只想要一个经典的对象数组。

2 个答案:

答案 0 :(得分:0)

默认情况下,

HttpClient处理并返回一个json对象的Observable。

在您的组件中,只要您使用http: HttpClient,您将在任何http方法调用后获得json响应。为了将您的json映射到您的时间数据模型,您可以使用map

这是一个虚拟的例子

export class MyData {
  id: number,
  name: string

  constructor(id: number, name: string) {
    this.id = id;
    this.name = name;
  }
}

//in your component
export class myComponent {
  myData: MyData
  constructor(private http: HttpClient) {}

  ngOnInit() {
    this.http.get(someUrl).map(data => {
      this.myData = new MyData(data['id'], data['name'])
    }).subscribe();
  }
}

你也可以在subscribe()中进行映射,但我在地图中进行了映射,以便以后如果你有更多的操作要执行,你可以直接链接。

答案 1 :(得分:-1)

试试这个:

import 'rxjs/add/operator/catch'; 
import { HttpClient } from "@angular/common/http";
import { HttpErrorResponse} from "@angular/common/http";

public myFunction(): void {
    this.getMyJsonArray().subscribe(data => 
        console.log(data);
    )
}

// Set the return type to an array of your object
private getMyJsonArray(): Observable<MyObject[]> {
    return this.http.get(this.url).catch(this._handleError);
}
private _handleError(err: HttpErrorResponse) {
     return Observable.throw(err.error);
}