异步等待JSON返回

时间:2018-01-04 05:38:26

标签: javascript async-await

我正在尝试从MesoWest API服务返回的JSON结构中访问一些数据以获取天气数据。目前,我正在尝试访问最新的雪深度观测值。贝克滑雪场,最终我想让请求更复杂,并绘制时间序列的数据。我认为只需从一个传感器的最新观察开始将是优化我的语法的最佳位置,但是在访问对象中的特定值时遇到问题。有人可以向我提供有关这些方法的任何说明吗?谢谢!

我的Javascript如下,我一直在使用JSBin.com以简洁的方式测试它:

async function getObs() {
    try {
        let response = await fetch('http://api.mesowest.net/v2/stations/nearesttime?&stid=mtb42&units=ENGLISH&token=804c1eb09a394255beef8e84b68123bf');
        if (response.ok) {
            let jsonData = await response.json();
            //console.log(jsonData);
            let obs = jsonData.STATION;
            console.log(obs);

        }
    throw new Error('Request Failed!');
    } catch (error) {
        //console.log(error);
    }
}

getObs();

哪个有效,只返回整个对象。当我尝试访问特定值时,例如:

async function getObs() {
    try {
        let response = await fetch('http://api.mesowest.net/v2/stations/nearesttime?&stid=mtb42&units=ENGLISH&token=804c1eb09a394255beef8e84b68123bf');
        if (response.ok) {
            let jsonData = await response.json();
            //console.log(jsonData);
            let obs = jsonData.STATION.OBSERVATIONS.snow_depth_value_1;
            console.log(obs);

        }
    throw new Error('Request Failed!');
    } catch (error) {
        //console.log(error);
    }
}

getObs();

它不起作用。对此有何见解?

1 个答案:

答案 0 :(得分:1)

这是访问此对象的正确方法:

...    
let obs = jsonData.STATION[0].OBSERVATIONS.snow_depth_value_1;
...

Station是一个数组。