我是Typescript的新手,想用Firebase函数构建一个简单的天气应用程序,首先我想调用一个API来获取一个城市的当前温度。
这是API调用的JSON响应:
{
"latitude": 40.710335,
"longitude": -73.99307,
"generationtime_ms": 0.3579854965209961,
"utc_offset_seconds": 0,
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"elevation": 27.0,
"current_weather": {
"temperature": 12.3,
"windspeed": 14.0,
"winddirection": 181.0,
"weathercode": 3,
"time": "2023-01-13T09:00"
},
"hourly_units": {
"time": "iso8601",
"temperature_2m": "°C"
},
在调用这个API时,我只想从当前天气中检索温度,下面是我当前的代码:
export const getWeather = functions.https.onRequest(async (request, response) => {
const dataResponse = await fetch("https://api.open-meteo.com/v1/forecast?latitude=40.71&longitude=-74.01&hourly=temperature_2m¤t_weather=true");
const data = await dataResponse.json();
console.log(data);
response.send(data);
});
我怎么能从JSON响应中只得到一个值(温度)呢?
1条答案
按热度按时间htrmnn0y1#
欢迎来到堆栈溢出!
看起来你想从API调用返回的JSON对象中访问一个值。在JavaScript中,你可以这样做:
所以在你的情况下,你想要
希望这有帮助!
在TypeScript中,如果你没有明确指定数据的结构,TS将尝试自动推断数据。在你的例子中,你正在进行一个fetch调用,这意味着TS没有上下文来描述输出是什么。
想象一下,从TS的Angular 来看,你点击的url可能包含一个API调用、一个网站或任何东西。
要解决此问题,您有两个选项:
1.禁用线路的TS(不推荐)
1.定义提取响应的类型