{
"coord": {
"lon": 73.86,
"lat": 18.52
},
"sys": {
"message": 0.0083,
"country": "IN",
"sunrise": 1436142797,
"sunset": 1436190324
},
"weather": [
{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "10d"
}
],
"base": "stations",
"main": {
"temp": 298.644,
"temp_min": 298.644,
"temp_max": 298.644,
"pressure": 948.79,
"sea_level": 1018.56,
"grnd_level": 948.79,
"humidity": 78
},
"wind": {
"speed": 6.46,
"deg": 253.501
},
"clouds": {
"all": 68
},
"rain": {
"3h": 0.225
},
"dt": 1436180142,
"id": 1259229,
"name": "Pune",
"cod": 200
}
这是我们在请求当前天气api以获取特定城市信息后获得的数据。 我的问题是创建一个循环,通过循环数据获取所有信息并获取所有值
我不想这样写来获取数据
data.coord.lon
data.weather.id
等等
希望你能理解
一个循环,它进入object并获取每个数组并从数组中提取每个数据/属性
这是api供参考 http://api.openweathermap.org/data/2.5/weather?q=london 看看
答案 0 :(得分:2)
如果您指的是收到的对象的所有属性,您可以使用 使用hasOwnProperty循环检查like here:
for (var key in data) {
if (obj.hasOwnProperty(key)) {
//key
//obj[key] value
}
}
您可以递归地使用它以相同的方式获取内部属性。 UPD 这是递归解决方案的小提琴:http://jsfiddle.net/shershen08/xdwqohz1/:
function listKeys(data){
for (var key in data) {
if (data.hasOwnProperty(key)) {
if((typeof data[key]).toLowerCase() != 'object'){
console.log(key, data[key])
} else {
console.log(key + ': ');
listKeys(data[key]);
}
}
}
}