javascript - 解析 JSON 时获取“未定义”对象
问题描述
我正在尝试使用我正在尝试的 Node.js 应用程序从 AccuWeather API 获取数据。JSON.parse()
我使用方法解析了响应。但是当我尝试访问一些嵌套对象时,它是一个undefined
值。我对这一切都很陌生,不知道发生了什么或该怎么做。
我从服务器得到的响应如下
{"LocalObservationDateTime":"2019-03-27T12:30:00+05:30","EpochTime":1553670000,"WeatherText":"Partly sunny","WeatherIcon":3,"HasPrecipitation":false,"PrecipitationType":null,"IsDayTime":true,"Temperature":{"Metric":{"Value":33.4,"Unit":"C","UnitType":17},"Imperial":{"Value":92.0,"Unit":"F","UnitType":18}},"RealFeelTemperature":{"Metric":{"Value":40.1,"Unit":"C","UnitType":17},"Imperial":{"Value":104.0,"Unit":"F","UnitType":18}},"RealFeelTemperatureShade":{"Metric":{"Value":37.4,"Unit":"C","UnitType":17},"Imperial":{"Value":99.0,"Unit":"F","UnitType":18}},"RelativeHumidity":61,"DewPoint":{"Metric":{"Value":25.1,"Unit":"C","UnitType":17},"Imperial":{"Value":77.0,"Unit":"F","UnitType":18}},"Wind":{"Direction":{"Degrees":315,"Localized":"NW","English":"NW"},"Speed":{"Metric":{"Value":16.7,"Unit":"km/h","UnitType":7},"Imperial":{"Value":10.4,"Unit":"mi/h","UnitType":9}}},"WindGust":{"Speed":{"Metric":{"Value":12.4,"Unit":"km/h","UnitType":7},"Imperial":{"Value":7.7,"Unit":"mi/h","UnitType":9}}},"UVIndex":11,"UVIndexText":"Extreme","Visibility":{"Metric":{"Value":16.1,"Unit":"km","UnitType":6},"Imperial":{"Value":10.0,"Unit":"mi","UnitType":2}},"ObstructionsToVisibility":"","CloudCover":50,"Ceiling":{"Metric":{"Value":9144.0,"Unit":"m","UnitType":5},"Imperial":{"Value":30000.0,"Unit":"ft","UnitType":0}},"Pressure":{"Metric":{"Value":1012.0,"Unit":"mb","UnitType":14},"Imperial":{"Value":29.88,"Unit":"inHg","UnitType":12}},"PressureTendency":{"LocalizedText":"Falling","Code":"F"},"Past24HourTemperatureDeparture":{"Metric":{"Value":-0.2,"Unit":"C","UnitType":17},"Imperial":{"Value":0.0,"Unit":"F","UnitType":18}},"ApparentTemperature":{"Metric":{"Value":40.6,"Unit":"C","UnitType":17},"Imperial":{"Value":105.0,"Unit":"F","UnitType":18}},"WindChillTemperature":{"Metric":{"Value":33.3,"Unit":"C","UnitType":17},"Imperial":{"Value":92.0,"Unit":"F","UnitType":18}},"WetBulbTemperature":{"Metric":{"Value":27.3,"Unit":"C","UnitType":17},"Imperial":{"Value":81.0,"Unit":"F","UnitType":18}},"Precip1hr":{"Metric":{"Value":0.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.0,"Unit":"in","UnitType":1}},"PrecipitationSummary":{"Precipitation":{"Metric":{"Value":0.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.0,"Unit":"in","UnitType":1}},"PastHour":{"Metric":{"Value":0.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.0,"Unit":"in","UnitType":1}},"Past3Hours":{"Metric":{"Value":0.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.0,"Unit":"in","UnitType":1}},"Past6Hours":{"Metric":{"Value":0.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.0,"Unit":"in","UnitType":1}},"Past9Hours":{"Metric":{"Value":1.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.04,"Unit":"in","UnitType":1}},"Past12Hours":{"Metric":{"Value":2.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.08,"Unit":"in","UnitType":1}},"Past18Hours":{"Metric":{"Value":3.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.12,"Unit":"in","UnitType":1}},"Past24Hours":{"Metric":{"Value":3.0,"Unit":"mm","UnitType":3},"Imperial":{"Value":0.12,"Unit":"in","UnitType":1}}},"TemperatureSummary":{"Past6HourRange":{"Minimum":{"Metric":{"Value":29.0,"Unit":"C","UnitType":17},"Imperial":{"Value":84.0,"Unit":"F","UnitType":18}},"Maximum":{"Metric":{"Value":33.4,"Unit":"C","UnitType":17},"Imperial":{"Value":92.0,"Unit":"F","UnitType":18}}},"Past12HourRange":{"Minimum":{"Metric":{"Value":26.4,"Unit":"C","UnitType":17},"Imperial":{"Value":80.0,"Unit":"F","UnitType":18}},"Maximum":{"Metric":{"Value":33.4,"Unit":"C","UnitType":17},"Imperial":{"Value":92.0,"Unit":"F","UnitType":18}}},"Past24HourRange":{"Minimum":{"Metric":{"Value":26.4,"Unit":"C","UnitType":17},"Imperial":{"Value":80.0,"Unit":"F","UnitType":18}},"Maximum":{"Metric":{"Value":34.9,"Unit":"C","UnitType":17},"Imperial":{"Value":95.0,"Unit":"F","UnitType":18}}}},"MobileLink":"http://m.accuweather.com/en/in/cheranallur/2875231/current-weather/2875231?lang=en-us","Link":"http://www.accuweather.com/en/in/cheranallur/2875231/current-weather/2875231?lang=en-us"}
我正在使用的代码如下
request('api_url', function(error, response, body) {
var jsonObj = JSON.parse(body);
console.log(jsonObj.EpochTime); // This works fine.
console.log(jsonObj.WeatherText); // Also this.
console.log(jsonObj.Speed.Metric.Value); // This is the code that is crashing.
}
我得到的错误信息如下
/Users/abbinvarghese/Desktop/weather-history/app.js:77
windSpeed: jsonObj.Speed.Metric.Value, // in km/h
^
TypeError: Cannot read property 'Metric' of undefined
at Object.<anonymous> (/Users/abbinvarghese/Desktop/weather-history/app.js:77:34)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
解决方案
你错过了Wind
jsonObj.Wind.Speed.Metric.Value
推荐阅读
- python - 如何删除python中嵌套列表内的嵌套列表?
- c++ - 使用偏函数应用程序或 curry 与重载和 std::visit 结合使用时理解错误
- c# - 未定义的 complexType 用作复杂类型扩展的基础
- entity-framework - 需要在上下文类中进行哪些更改才能将连接字符串移动到 appsettings.json 文件中
- excel - 使用 VBA 在 Excel 电子表格中记录更改
- charts - 谷歌图表在工具提示中显示未格式化的值
- java - 无法使用 DateTimeFormatter 解析
- javascript - 为什么 Firefox 将我的数组变量视为未定义?
- azure-data-factory - 数据流单行转换
- parceljs - Parcel 输出大量微小的 es6 模块文件