У меня есть данные ответа от API, которые я отправляю как json.send({сообщение: 'успех', маршруты: 'полет'})
Затем я выполняю свой запрос на получение в Angular, чтобы получить ответ. Ответ выглядит так
[
{
"AirItinerary":{
"OriginDestinationOptions":{
"OriginDestinationOption":[
{
"FlightSegment":[
{
"DepartureAirport":{
"LocationCode":"JFK"
},
"ArrivalAirport":{
"LocationCode":"LAX"
},
"MarketingAirline":{
"Code":"AS"
},
"ArrivalTimeZone":{
"GMTOffset":-7
},
"TPA_Extensions":{
"eTicket":{
"Ind":true
}
},
"StopQuantity":0,
"ElapsedTime":375,
"ResBookDesigCode":"R",
"MarriageGrp":"O",
"Equipment":{
"AirEquipType":"32S"
},
"DepartureDateTime":"2018-10-07T16:55:00",
"ArrivalDateTime":"2018-10-07T20:10:00",
"FlightNumber":1413,
"OnTimePerformance":{
"Percentage":"NNN"
},
"OperatingAirline":{
"FlightNumber":1413,
"Code":"AS"
},
"DepartureTimeZone":{
"GMTOffset":-4
}
}
],
"ElapsedTime":375
},
{
"FlightSegment":[
{
"DepartureAirport":{
"LocationCode":"LAX"
},
"ArrivalAirport":{
"LocationCode":"JFK"
},
"MarketingAirline":{
"Code":"AS"
},
"ArrivalTimeZone":{
"GMTOffset":-4
},
"TPA_Extensions":{
"eTicket":{
"Ind":true
}
},
"StopQuantity":0,
"ElapsedTime":315,
"ResBookDesigCode":"R",
"MarriageGrp":"O",
"Equipment":{
"AirEquipType":"32S"
},
"DepartureDateTime":"2018-10-20T07:35:00",
"ArrivalDateTime":"2018-10-20T15:50:00",
"FlightNumber":1404,
"OnTimePerformance":{
"Percentage":"NNN"
},
"OperatingAirline":{
"FlightNumber":1404,
"Code":"AS"
},
"DepartureTimeZone":{
"GMTOffset":-7
}
}
],
"ElapsedTime":315
}
]
},
"DirectionInd":"Return"
},
"TPA_Extensions":{
"ValidatingCarrier":{
"Code":"AS"
}
},
"SequenceNumber":1,
"AirItineraryPricingInfo":{
"PTC_FareBreakdowns":{
"PTC_FareBreakdown":{
"FareBasisCodes":{
"FareBasisCode":[
{
"BookingCode":"R",
"DepartureAirportCode":"JFK",
"AvailabilityBreak":true,
"ArrivalAirportCode":"LAX",
"content":"R21N6"
},
{
"BookingCode":"R",
"DepartureAirportCode":"LAX",
"AvailabilityBreak":true,
"ArrivalAirportCode":"JFK",
"content":"R21XN6"
}
]
},
Я получаю свой объект через подписку, а затем преобразовываю его и отправляю в свой компонент в качестве наблюдаемого. Как я могу сопоставить ответ, если это объект? Я могу получить порядковый номер, потому что он имеет номер типа в моем интерфейсе. Я пытался использовать второй интерфейс, но получаю ошибку типа.
import { Itinerary, AirItineraryList } from "./../models/Itinerary";
import { Subject } from "rxjs";
import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { map } from "rxjs/operators";
@Injectable({
providedIn: "root"
})
export class InstantSearchService {
Itineraries: Itinerary[] = [];
private updatedItineraries = new Subject<Itinerary[]>();
constructor(private http: HttpClient) {}
getItineraries() {
console.log('getting')
this.http
.get<{ message: string; Itineraries: Itinerary[] }>(
"http://localhost:3000/cities/instant"
)
.pipe(
map(ItineraryData => {
return ItineraryData.Itineraries.map(flight => {
return {
AirItinerary: flight.AirItinerary,
SequenceNumber: flight.SequenceNumber
};
});
})
)
.subscribe(transIten => {
this.Itineraries = transIten;
this.updatedItineraries.next([...this.Itineraries]);
});
}
getItineraryUpdateListener() {
return this.updatedItineraries.asObservable();
}
}
интерфейс
export interface Itinerary {
AirItinerary:AirItineraryList[];
SequenceNumber: Number;
}
export interface AirItineraryList {
OriginDestinationOptions: Object;
DirectionInd: string;
}