我正在从http get请求接收一个JSON对象,该请求的value属性中包含我想要的对象数组。由于我是Angular 7和Rxjs的新手,所以我不知道如何将数组映射到我的对象。
我将所有数据取回,这将带回数据,以验证它是否是我想要的。我已经从其他API获得了对象数组,但是它们尚未位于父对象的value属性中。当我在控制台上使用tap消息时,我看到了要推送到对象数组的内容,但是我不知道映射语法。
下面的JSON是我从user.service.ts的getTfsUsers()方法获取的信息。
下面是我要将数据映射到的类(assignee.ts)。
我希望getTfsUsers()来回返回可观察的受让人对象数组
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#directoryObjects(displayName,mail)",
"@odata.nextLink": "https://graph.microsoft.com/v1.0/groups/blahblah",
"value": [
{
"@odata.type": "#microsoft.graph.user",
"displayName": "Deer, John",
"mail": "deer.john@myplace.org"
},
{
"@odata.type": "#microsoft.graph.user",
"displayName": "Doe, Jane",
"mail": "doe.jane@myplace.org"
},
{
"@odata.type": "#microsoft.graph.user",
"displayName": "Fawn, Mike",
"mail": "fawn.mike@myplace.org"
}
]
}
getTfsUsers(): Observable<any>{
const uri = `${this.groupsBaseUri}/${this.tfsUsersGroupId}/members/${this.displayNameMailFields}`;
return this.http.get<any>(uri)
.pipe(
catchError((error: HttpErrorResponse) => { return throwError(error); })
);
}
export class Assignee {
mail: string;
displayName: string;
}
是否可以将值属性从返回的对象映射到受让人数组?
答案 0 :(得分:1)
您可以为此使用RxJS的map运算符,并将其嵌套在pipe()
中。您将需要在服务顶部导入map
运算符,如下所示。请注意,它与JavaScript的Array.map()不同。
import { map } from 'rxjs/operators';
.
.
getTfsUsers(): Observable<any>{
const uri = `${this.groupsBaseUri}/${this.tfsUsersGroupId}/members/${this.displayNameMailFields}`;
return this.http.get<any>(uri)
.pipe(
map(data => data['value'].map(obj => {
return {
mail: obj.mail,
displayName: obj.displayName
};
})),
catchError((error: HttpErrorResponse) => { return throwError(error); })
);
}