Mesonet API JSON respuesta a la tabla html

Estoy tratando de convertir una respuesta de JSON API en una tabla HTML. Tengo algunas de las piezas que salen correctamente, pero no puedo averiguar cómo profundizar en la respuesta. Quiero conseguir el tiempo de observación, la temperatura y la ráfaga del viento/la velocidad en la mesa. No le gusta cuando pongo otro '.valor' después de cualquiera de las peticiones de OBSERVATIONS. Dice que el valor no está definido. Cualquier ayuda es apreciada!

    html
    
    
    Alaskan Weather Observations
    
    
    
    
    
    

Alaskan Weather Observations


Station Name Station ID Longitude Latitude Time Temperature Wind Speed Wind Gust
    

lo que se muestra con mi código actualDatos Estoy tratando de analizar

Pregunta hecha hace 3 años, 4 meses, 28 días - Por bytebard66b1


2 Respuestas:

  • El problema que estás teniendo es que estás tratando de acceder a los valores dentro del objeto OBSERVATIONS de una manera incorrecta. En el JSON de respuesta, OBSERVATIONS es un objeto que contiene subobjetos con nombres como air_temp_value_1, wind_speed_value_1, etc.

    Para acceder a los valores dentro de estos subobjetos, necesitas usar la notación de corchetes [nombre_del_subobjeto] en lugar de puntos (.) directamente después de OBSERVATIONS. Aquí te dejo cómo corregir esa parte del código:

    javascript
    station_data += ''+data.STATION[i].OBSERVATIONS['air_temp_value_1'].date_time+'';
    station_data += ''+data.STATION[i].OBSERVATIONS['air_temp_value_1'].value+'';
    station_data += ''+data.STATION[i].OBSERVATIONS['wind_speed_value_1'].value+'';
    station_data += ''+data.STATION[i].OBSERVATIONS['wind_gust_value_1'].value+'';
    

    Usando esta notación, podrás acceder a los valores dentro de los subobjetos de OBSERVATIONS y mostrarlos en tu tabla HTML correctamente. Espero que esta corrección te ayude a resolver el problema. ¡Déjame saber si tienes alguna otra pregunta o duda!

    Respondida el Dec 19, 2020 a las 02:59 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El principal problema con tu código es que estás intentando acceder a una propiedad de un objeto que no está definido. Específicamente, estás intentando acceder a data.STATION[i].OBSERVATIONS.air_temp_value_1, pero data.STATION[i].OBSERVATIONS no está definido.

    Para arreglar esto, necesitas verificar si data.STATION[i].OBSERVATIONS está definido antes de intentar acceder a sus propiedades. Puedes hacerlo de la sigiente forma:

    
    if (data.STATION[i].OBSERVATIONS) {
      // El objeto OBSERVATIONS está definido, así que es esmable acceder a sus propiedades.
      station_data += '' + data.STATION[i].OBSERVATIONS.air_temp_value_1.date_time + '';
      station_data += '' + data.STATION[i].OBSERVATIONS.air_temp_value_1 + '';
      station_data += '' + data.STATION[i].OBSERVATIONS.air_gust_value_1 + '';
    }
    

    Además, hay un problema adicional en tu código. Estás intentando acceder a la propiedad value_1 de los objetos air_temp, air_gust y air_speed dentro del objeto OBSERVATIONS, pero esos nombres de propiedades no son consistentes con los nombres de las propiedades en los ejemplos de JSON de la documentación de la API.

    Los nombres de las propiedades correctas son los siguientes:

    air_temp_value air_gust_value

    • `air_speed_value`

    Así que, el código corregido sería:

    
    if (data.STATION[i].OBSERVATIONS) {
      // El objeto OBSERVATIONS está definido, así que es esmable acceder a sus propiedades.
      station_data += '' + data.STATION[i].OBSERVATIONS.air_temp_value.date_time + '';
      station_data += '' + data.STATION[i].OBSERVATIONS.air_temp_value + '';
      station_data += '' + data.STATION[i].OBSERVATIONS.air_gust_value + '';
    }
    

    Con este código corregido, podrás acceder a los valores de tiempo de observación, temeratura y velocidad de viento de los objetos OBSERVATIONS y mostrarlos en tu tabla.

    Respondida el Dec 19, 2020 a las 03:09 - por Gemini

    Votos positivos: 0 | Votos negativos: 0