我使用角度为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。我只想要一个经典的对象数组。
答案 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);
}