我正在尝试从API获取JSON,然后访问JSON的"main"
对象的"weather"
对象。
当我使用此代码时:
$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=35&lon=139", function(json) {
var data = JSON.stringify(json);
alert(data);
});
我得到了这个输出:
{
"coord": {
"lon": 159,
"lat": 35
},
"weather": [{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "https://cdn.glitch.com/6e8889e5-7a72-48f0-a061-863548450de5%2F10n.png?1499366021399"
}],
"base": "stations",
"main": {
"temp": 22.59,
"pressure": 1027.45,
"humidity": 100,
"temp_min": 22.59,
"temp_max": 22.59,
"sea_level": 1027.47,
"grnd_level": 1027.45
},
"wind": {
"speed": 8.12,
"deg": 246.503
},
"rain": {
"3h": 0.45
},
"clouds": {
"all": 92
},
"dt": 1499521932,
"sys": {
"message": 0.0034,
"sunrise": 1499451436,
"sunset": 1499503246
},
"id": 0,
"name": "",
"cod": 200
}
现在,我想要获得的输出是"Rain"
("main"
对象的"weather"
对象的属性(我希望我说的正确,我是一个初学者))。
从逻辑上讲,我会这样做:
$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=35&lon=139", function(json) {
var data = JSON.stringify(json);
alert(data["weather"].main);
});
但这并没有给我任何输出。
我做了一些搜索,发现我应该解析。
但是当我这样做的时候:
$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=35&lon=139", function(json) {
var data = JSON.stringify(json);
var Jason = JSON.parse(data);
alert(Jason["weather"].main);
});
我再次获得了undefined
作为我的输出。
那么,我的代码应该是什么样子,以便我的输出为"Rain"
?
PS:对不起,如果我在描述我的问题时犯了错误,我对JavaScript / jQuery很新,而且英语是我的第二语言。
答案 0 :(得分:2)
你几乎拥有它,只需在访问天气后添加[0]
。
由于天气是一个数组,你需要这个来从第一个元素获取数据:
$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=35&lon=139",
json => console.log(json.weather[0].main)
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
此外,getJSON
函数已经为您解析了JSON,无需额外的JSON.parse
答案 1 :(得分:0)
JSON.Stringify
会将json转换为字符串。如果要访问对象,则需要JSON对象而不是字符串。
weather是一个对象数组,您需要使用索引访问数组。如您所希望的第一个对象,请使用json["weather"][0]
$.getJSON("https://fcc-weather-api.glitch.me/api/current?lat=35&lon=139", function(json){
alert(json["weather"][0].main);
});