我是新來的打字稿,並試圖解析從一個GET請求,它看起來像這樣一個JSON(刪除了一些數據):打字稿,JSON:Mappping嵌套數組總是返回空
{
"currency_rate":1,
"data":[
{
"mapIdfrom":"oslo_no",
"refr":false,
"duration":{
"total":75300,
"return":0,
"departure":75300
},
"flyTo":"STR"
}
]
}
我正在「 currency_rate「例如,但」數據「 - 陣列是空的。
的GET請求看起來像這樣(只相關部分):
[...]
api_url = 'https://api.skypicker.com/flights';
[...]
let body = {
flyFrom: 'OSL',
to: 'STR',
dateFrom: '01%252F04%252F2017',
dateTo: '20%2F04%2F2017',
daysInDestinationFrom: 15,
daysInDestinationTo: 20,
returnFrom: '01%2F04%2F2017',
returnTo: '20%2F04%2F2017',
typeFlight: 'oneway',
oneforcity: 0,
one_per_date: 0,
passengers: 1,
adults: 1,
children: 0,
infants: 0,
flyDays: '%5B0%2C1%2C2%2C3%2C4%2C5%2C6%5D',
onlyWorkingDays: 0,
directFlights: 0,
partner: 'picky',
partner_market: 'en',
v: 2,
xml: 0,
curr: 'EUR',
locale: 'en',
price_from: 1,
price_to: 10000,
dtimefrom: '00%3A00',
dtimeto: '00%3A00',
atimefrom: '00%3A00',
atimeto: '00%3A00',
returndtimefrom: '00%3A00',
returndtimeto: '00%3A00',
returnatimefrom: '00%3A00',
returnatimeto: '00%3A00',
stopoverfrom: '00%3A00',
stopoverto: '00%3A00',
booking_token: 'hashed%20data',
offset: 0,
limit: 30,
sort: 'price',
asc: 1
}
let bodyString = JSON.stringify(body)
return this.http.get(`${this.api_url}?${bodyString}`)
.map(res => <SkyPickerFlight>res.json());
模型 「SkyPickerFlight」 的定義是這樣的:
import { SkyPickerFlightData } from '../models/skyPickerFlightData';
import { Observable } from 'rxjs/Rx';
export interface SkyPickerFlightI {
currency: string;
data: Observable<any[]>;
}
我也試圖與data: Observable<SkyPickerFlightData[]>
,替換data: Observable<any[]>
實際的對象,但也不起作用。
在這裏你可以得到完整的GET請求:
https://api.skypicker.com/flights?flyFrom=OSL&to=STR&dateFrom=01%2F04%2F2017&dateTo=20%2F04%2F2017&daysInDestinationFrom=15&daysInDestinationTo=20&returnFrom=01%2F04%2F2017&returnTo=20%2F04%2F2017&typeFlight=oneway&oneforcity=0&one_per_date=0&passengers=1&adults=1&children=0&infants=0&flyDays=%5B0%2C1%2C2%2C3%2C4%2C5%2C6%5D&onlyWorkingDays=0&onlyWeekends=0&directFlights=0&partner=picky&partner_market=en&v=2&xml=0&curr=EUR&locale=en&price_from=1&price_to=10000&dtimefrom=00%3A00&dtimeto=00%3A00&atimefrom=00%3A00&atimeto=00%3A00&returndtimefrom=00%3A00&returndtimeto=00%3A00&returnatimefrom=00%3A00&returnatimeto=00%3A00&stopoverfrom=00%3A00&stopoverto=00%3A00&booking_token=hashed%20data&offset=0&limit=30&sort=price&asc=1
我仍然在尋找到它,但它看起來像GET請求使用this.http.get(
$ {} this.api_url是有點時髦的$ {} bodyString )
實際返回:
{"connections":[],"currency":"EUR","del":0,"time":1,"search_params":{"to_type":"anywhere","flyFrom_type":"anywhere","seats":{"infants":0,"passengers":1,"adults":1,"children":0}},"ref_tasks":{},"currency_rate":1.0,"data":[],"refresh":[]}
與上述GET請求不同的結果。不知道我是否清楚。但是,試圖這樣的GET請求(我將不遺餘力你的URLSearchParams的長定義)的錯誤網關錯誤結束:
return this.http.get(this.api_url, {search: params})
.map(res => res)
得到任何幫助, 安德烈
----編輯 - ---- 它的工作後,我複製粘貼在整個URL:
return this.http.get(<URL PASTED HERE>)
.map(res => res)
仍想知道如何傳遞一個清晰的方式的參數,而不是在那裏粘貼完整的URL。
謝謝!
嘿, 感謝您的幫助。但不幸的是,那也沒有做到。也試過'data:SkyPickerFlightData []' 其他想法? – andres