我在 Angular 4 中创建了一个服务,并使用以下代码通过 REST/JSON(Angular 的新功能)获取数据:
界面
export interface IItem {
Id: number;
Title: string;
}
Service
import { IItem } from './item';
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/do';
import 'rxjs/add/operator/map';
@Injectable()
export class ItemTest {
constructor(private _http: HttpClient) {}
getItems(): Observable<IItem[]> {
return this._http.get<IItem[]>('url')
.do(data => {
console.log(data);
})
}
}
如果响应采用这种格式,则 http 转换为 IITem 可以正常工作
[
{
"Id": 53,
"Title": "Test Document 4.docx"
},
{
"Id": 55,
"Title": "Test Document 2.docx"
}
]
但服务器的实际响应看起来像这样,并且转换不起作用。将响应的“结果”部分转换为 IItem 数组的最佳方法是什么?
{
"d": {
"results": [
{
"Id": 53,
"Title": "Test Document 4.docx"
},
{
"Id": 55,
"Title": "Test Document 2.docx"
}
]
}
}