我有以下HttpClient.post
调用,它返回一个Objects数组。
import { map } from 'rxjs/operators/map';
public getArray(profileId: number): Observable<any> {
return this.http.post("/api/url", postObject, HttpSettings.GetDefaultHttpRequestOptions())
.pipe(map(data => {
console.log(data); // logs (2) [{…}, {…}]
return data;
}));
}
我需要实例化一个对象数组。我不能只输入assert,因为我需要Thing
构造函数来解析一些json
和其他。
基本上我想做的是:
.pipe(map(data => {
console.log(data); // logs (2) [{…}, {…}]
return data.map(v => new Thing(v));
}));
但是我不能(据我所知)因为data
属于ArrayBuffer
类型且不可迭代。我怎样才能做到这一点?
答案 0 :(得分:9)
如何从服务器实际发送数据?是json
还是其他什么?如果是json
,请尝试使用HttpClient
参数中的responseType:'json'
在options
的呼叫(see documentation)中指定该内容。
import { map } from 'rxjs/operators/map';
public getArray(profileId: number): Observable<Thing[]> {
var options = HttpSettings.GetDefaultHttpRequestOptions();
options.responseType = 'json';
return this.http.post("/api/url", postObject, options)
.pipe(map(data => data.map(v => new Thing(v))));
}