如何在 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 documentationresult 已经是一个对象,所以您所要做的就是访问它:

weather.find({search: zipCode, degreeType: 'F'}, function(err, result) {
    console.log("Low: " + result[0].forecast[0].low);
});

我认为您需要在 JSON.stringify() 之后解析字符串,因为 JSON stringify 将对象更改为字符串。

参考:JSON Stringify, JSON Parse