Я хочу отобразить значение ответа JSON на следующий интерфейс:
export interface CyHourlyWeather {
temperature: string;
skycon: string;
precipitation: number;
wind: {
speed: number,
direction: number
},
cloudrate: number
}
Я хочу отобразить ответ сервера в HourlyWeather: Array<CyHourlyWeather>
, чтобы массив мог содержать несколько CyHourlyWeather
.Однако структура данных массива сложна - я не могу придумать, как отфильтровать и отобразить эти данные.
JSON-ответ:
"result":{
"status":"ok",
"hourly":{
"status":"ok",
"temperature":[
{
"value":8.0,
"datetime":"2015-09-28 13:00"
},
{},
] // e.g. 1hr, 2hr, 3hr...
"skycon": [{"value": ..., "datetime": ...}, {}],
"precipitation": [{"value": ..., "datetime": ... }, {}],
"wind": [{"speed": ..., "direction": ...}, {}],
"cloudrate": [{"value": ..., "datetime": ... }, {}],
}
}
Я знаю, как извлечь данные (например, получить определенное значение) и выполнить простое отображение (например, отобразить ответ как отдельный объект, но не как массив), но когда я пытаюсь применить некоторый массив JavaScript (forEach ...) и итеративные функции, это просто как-то не получается.Любые предложения о том, как реализовать это?
Редактировать - Что я пытался:
this.caiyunForecastService.getCaiyunForecast()
.subscribe( val => this.hourlyWeather = val.map(element => {
return <CyHourlyWeather> {
temperature: element.result.hourly.temperature.value,
skycon: element.result.hourly.skycon.value,
precipitation: element.result.hourly.precipitation.value,
wind: {
speed: element.result.hourly.wind.speed,
direction: element.result.hourly.wind.direction
},
cloudrate: element.result.hourly.cloudrate.value
}
}));
Это возвращает val.map не является функцией и завершается ошибкой.
Редактировать 2 - более длинный пример ответа
"result":{
"status":"ok",
"hourly":{
"status":"ok",
"pm25":[ //pm25
{
"value":8.0,
"datetime":"2015-09-28 13:00"
},
{
"value":8.0,
"datetime":"2015-09-28 14:00"
},
{
"value":7.0,
"datetime":"2015-09-28 15:00"
},
{
"value":3.0,
"datetime":"2015-09-28 16:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 17:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 18:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 19:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 20:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 21:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 22:00"
},
{
"value":-0.0,
"datetime":"2015-09-28 23:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 00:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 01:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 02:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 03:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 04:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 05:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 06:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 07:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 08:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 09:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 10:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 11:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 12:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 13:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 14:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 15:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 16:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 17:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 18:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 19:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 20:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 21:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 22:00"
},
{
"value":-0.0,
"datetime":"2015-09-29 23:00"
},
{
"value":-0.0,
"datetime":"2015-09-30 00:00"
},
{
"value":-0.0,
"datetime":"2015-09-30 01:00"
},
{
"value":-0.0,
"datetime":"2015-09-30 02:00"
},
{
"value":-0.0,
"datetime":"2015-09-30 03:00"
},
{
"value":-0.0,
"datetime":"2015-09-30 04:00"
},
{
"value":-0.0,
"datetime":"2015-09-30 05:00"
},
{
"value":3.0,
"datetime":"2015-09-30 06:00"
},
{
"value":8.0,
"datetime":"2015-09-30 07:00"
},
{
"value":14.0,
"datetime":"2015-09-30 08:00"
},
{
"value":19.0,
"datetime":"2015-09-30 09:00"
},
{
"value":24.0,
"datetime":"2015-09-30 10:00"
},
{
"value":29.0,
"datetime":"2015-09-30 11:00"
},
{
"value":33.0,
"datetime":"2015-09-30 12:00"
}
],
"description":"\u66b4\u96e8\u6e10\u5927\uff0c\u4eca\u5929\u665a\u95f421\u70b9\u949f\u540e\u5927\u96e8\uff0c\u5176\u540e\u9634",
"skycon":[
{
"value":"RAIN",
"datetime":"2015-09-28 13:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 14:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 15:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 16:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 17:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 18:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 19:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 20:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 21:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 22:00"
},
{
"value":"RAIN",
"datetime":"2015-09-28 23:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 00:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 01:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 02:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 03:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 04:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 05:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 06:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 07:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 08:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 09:00"
},
{
"value":"RAIN",
"datetime":"2015-09-29 10:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 11:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 12:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 13:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 14:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 15:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 16:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 17:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 18:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 19:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 20:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 21:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 22:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-29 23:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 00:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 01:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 02:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 03:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 04:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 05:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 06:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 07:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 08:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 09:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 10:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 11:00"
},
{
"value":"CLOUDY",
"datetime":"2015-09-30 12:00"
}
],
и тестовый API: https://api.caiyunapp.com/v2/TAkhjf8d1nlSlspN/121.6544,25.1552/forecast.json