如何在 JSON 中访问此对象
How do I access this object in JSON
我正在尝试访问 Javascript 中的 weather
对象。我试过 output.weather
但它 returns undefined
。我做错了什么?
JSON:
[
{
"location":{
"name":"XX",
"zipcode":"XX",
"lat":"42.284",
"long":"-82.029",
"timezone":"-4",
"alert":"",
"degreetype":"C",
"imagerelativeurl":"http://blob.weather.microsoft.com/static/weather4/en-us/"
},
"current":{
"temperature":"2",
"skycode":"31",
"skytext":"Clear",
"date":"2020-04-03",
"observationtime":"23:45:00",
"observationpoint":"N0P 1E0, ON",
"feelslike":"1",
"humidity":"84",
"winddisplay":"6 km/h North",
"day":"Friday",
"shortday":"Fri",
"windspeed":"6 km/h",
"imageUrl":"http://blob.weather.microsoft.com/static/weather4/en-us/law/31.gif"
},
"forecast":[
{
"low":"2",
"high":"9",
"skycodeday":"31",
"skytextday":"Clear",
"date":"2020-04-03",
"day":"Friday",
"shortday":"Fri",
"precip":"0"
},
{
"low":"2",
"high":"11",
"skycodeday":"32",
"skytextday":"Sunny",
"date":"2020-04-04",
"day":"Saturday",
"shortday":"Sat",
"precip":"60"
},
{
"low":"0",
"high":"8",
"skycodeday":"30",
"skytextday":"Partly Sunny",
"date":"2020-04-05",
"day":"Sunday",
"shortday":"Sun",
"precip":"60"
},
{
"low":"5",
"high":"11",
"skycodeday":"30",
"skytextday":"Partly Sunny",
"date":"2020-04-06",
"day":"Monday",
"shortday":"Mon",
"precip":"30"
},
{
"low":"9",
"high":"13",
"skycodeday":"26",
"skytextday":"Cloudy",
"date":"2020-04-07",
"day":"Tuesday",
"shortday":"Tue",
"precip":"80"
}
]
}
]
JS 代码:
const rl = require('readline-sync');
const weather = require('weather-js');
var zipCode = rl.question('Please enter your ZIP code: ').toLowerCase();
var output;
weather.find({search: zipCode, degreeType: 'F'}, function(err, result) {
if (err)
{
console.log(err);
}
output = JSON.stringify(result);
console.log(output.weather); // returns undefined
});
问题是 output 是一个字符串,而不是一个对象。您是指 JSON.parse() 吗?从字符串输出一个对象。
根据 weather-js
documentation,result
已经是一个对象,所以您所要做的就是访问它:
weather.find({search: zipCode, degreeType: 'F'}, function(err, result) {
console.log("Low: " + result[0].forecast[0].low);
});
我认为您需要在 JSON.stringify() 之后解析字符串,因为 JSON stringify 将对象更改为字符串。
我正在尝试访问 Javascript 中的 weather
对象。我试过 output.weather
但它 returns undefined
。我做错了什么?
JSON:
[
{
"location":{
"name":"XX",
"zipcode":"XX",
"lat":"42.284",
"long":"-82.029",
"timezone":"-4",
"alert":"",
"degreetype":"C",
"imagerelativeurl":"http://blob.weather.microsoft.com/static/weather4/en-us/"
},
"current":{
"temperature":"2",
"skycode":"31",
"skytext":"Clear",
"date":"2020-04-03",
"observationtime":"23:45:00",
"observationpoint":"N0P 1E0, ON",
"feelslike":"1",
"humidity":"84",
"winddisplay":"6 km/h North",
"day":"Friday",
"shortday":"Fri",
"windspeed":"6 km/h",
"imageUrl":"http://blob.weather.microsoft.com/static/weather4/en-us/law/31.gif"
},
"forecast":[
{
"low":"2",
"high":"9",
"skycodeday":"31",
"skytextday":"Clear",
"date":"2020-04-03",
"day":"Friday",
"shortday":"Fri",
"precip":"0"
},
{
"low":"2",
"high":"11",
"skycodeday":"32",
"skytextday":"Sunny",
"date":"2020-04-04",
"day":"Saturday",
"shortday":"Sat",
"precip":"60"
},
{
"low":"0",
"high":"8",
"skycodeday":"30",
"skytextday":"Partly Sunny",
"date":"2020-04-05",
"day":"Sunday",
"shortday":"Sun",
"precip":"60"
},
{
"low":"5",
"high":"11",
"skycodeday":"30",
"skytextday":"Partly Sunny",
"date":"2020-04-06",
"day":"Monday",
"shortday":"Mon",
"precip":"30"
},
{
"low":"9",
"high":"13",
"skycodeday":"26",
"skytextday":"Cloudy",
"date":"2020-04-07",
"day":"Tuesday",
"shortday":"Tue",
"precip":"80"
}
]
}
]
JS 代码:
const rl = require('readline-sync');
const weather = require('weather-js');
var zipCode = rl.question('Please enter your ZIP code: ').toLowerCase();
var output;
weather.find({search: zipCode, degreeType: 'F'}, function(err, result) {
if (err)
{
console.log(err);
}
output = JSON.stringify(result);
console.log(output.weather); // returns undefined
});
问题是 output 是一个字符串,而不是一个对象。您是指 JSON.parse() 吗?从字符串输出一个对象。
根据 weather-js
documentation,result
已经是一个对象,所以您所要做的就是访问它:
weather.find({search: zipCode, degreeType: 'F'}, function(err, result) {
console.log("Low: " + result[0].forecast[0].low);
});
我认为您需要在 JSON.stringify() 之后解析字符串,因为 JSON stringify 将对象更改为字符串。