У меня уже есть вызов к моему веб-API.API возвращает список объектов, сериализованных в JSON.Я знаю, что существуют довольно разумные способы приведения отдельных элементов из JSON в объекты машинописи, но я не могу придумать, как выполнить это приведение, чтобы оно возвращало список объектов машинописи.
Мне нужно привестик объекту машинописного текста, поскольку в объекте есть функция, которую я хочу запустить, но без приведения функция не существует.
Вот код, используемый для получения JSON:
findTrainPage(filter = '', sortOrder = 'desc', pageNumber = 0, pageSize = 15, departStart=null, departEnd=null, origStatusWhitelist=null): Observable<Train[]>
{
//retrieves a page of trains to display in the train list
let url = AppUtils.backendApiUrl() + '/trainList/getPage';
let requestBody = { 'filter': filter, 'sortOrder': sortOrder, 'pageNum': pageNumber, 'pageSize': pageSize, 'departStart': departStart, 'departEnd': departEnd, 'origStatusWhitelist': origStatusWhitelist };
let options = new RequestOptions({ headers: AppUtils.commonHttpHeaders() });
let headers = { headers: AppUtils.commonHttpHeaders() };
return this.http.post(url, requestBody, headers).map(res => res.json()).catch(error => Observable.throw(error.json()));
}
А вот объект Train, к которому я пытаюсь привести:
export class Train implements TrainInterface
{
trainGUID: string;
trainSymbol: string;
createTime: string; //Should be formatted as a date, SQL table uses smalldatetime
departTime: string;
origStatus: OriginalStatuses;
badGUIDFlag: boolean;
trips: Trip[];
private _evalStatus: EvalStatuses;
get evalStatus(): EvalStatuses
{
return this.trips.reduce((min, p) => p.evalStatus < min ? p.evalStatus : min, this.trips[0].evalStatus);
}
}
Я просмотрел следующие сообщения SO:
Экземпляр класса JSON в TypeScript?
Angular2 HTTP GET - приведение ответа к полному объекту