Me gustaría que mi código obtenga JSON y lea el valor de temperatura de Londres.
Cualquier ayuda será muy apreciada.
Sin embargo, tengo dos problemas, los datos obtenidos muestran esto: [objeto Objeto]
Tal vez así:
data.["main"].tempEs una temperatura Kelvin para Londres, 277,21.
Mi JSON:
{ "coord": { "lon": -0.1257, "lat": 51.5085 }, "weather": [{ "id": 800, "main": "Clear", "description": "clear sky", "icon": "01n" }], "base": "stations", "main": { "temp": 277.21, "feels_like": 275.36, "temp_min": 274.4, "temp_max": 279.13, "pressure": 1042, "humidity": 93 }, "visibility": 9000, "wind": { "speed": 2.06, "deg": 230 }, "clouds": { "all": 9 }, "dt": 1642014889, "sys": { "type": 2, "id": 2019646, "country": "GB", "sunrise": 1641974505, "sunset": 1642004119 }, "timezone": 0, "id": 2643743, "name": "London", "cod": 200 }Mi código incorrecto:
$.ajax({ url: "https://api.openweathermap.org/data/2.5/weather?q=London&appid=a7a01852c805157a4c8334e87e39c75c", cache: false, dataType: "json", complete: function(data) { tempLondon = data; $('#tempLondon').append('The temperature is ' + tempLondon ); console.log(tempLondon); } });Cuando convierte un objeto en una cadena, por ejemplo, al intentar insertarlo directamente en el marcado, se convierte en '[object Object]' . Si bien esto ciertamente no es intuitivo, debe recordar que los objetos pueden contener referencias circulares, por lo que es posible que no sea posible convertirlos en cadenas.
Sin embargo, en su lugar, puede usar JSON.stringify para convertir su objeto en una cadena JSON e imprimirla en la consola:
console.log(JSON.stringify(tempLondon, null, '\t')); Debido a que su objeto se construye a partir de una cadena JSON en primer lugar (esto sucede detrás de escena en la función $.ajax de jQuery), no puede contener ninguna referencia circular, por lo que no habrá ningún problema para construir una cadena JSON a partir de él.
Si desea recuperar la temperatura en sí, simplemente use la notación de puntos:
console.log(tempLondon.main.temp);prueba esto
$.ajax({ type: 'GET', url: "https://api.openweathermap.org/data/2.5/weather?q=London&appid=a7a01852c805157a4c8334e87e39c75c", dataType: "json", success: function(data) { console.log(JSON.stringify(data)); $('#tempLondon').html('The temperature is ' + data.main.temp ); }, error: function (error) { console.log(JSON.stringify(error)); } });en el futuro no pongas punto y paréntesis juntos.
es válido
data.main.temp //or data["main"].tempNO es valido
data.["main"].temp