Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Acceso a valores de un json

Estas en el tema de Acceso a valores de un json en el foro de Javascript en Foros del Web. Hola gente. Tengo un problema para acceder a valores específicos de un json. No soy muy conocedor del json, como leerlo y mostrarlo, así que ...
  #1 (permalink)  
Antiguo 14/06/2016, 13:56
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba, Argentina
Mensajes: 74
Antigüedad: 13 años, 5 meses
Puntos: 4
Exclamación Acceso a valores de un json

Hola gente. Tengo un problema para acceder a valores específicos de un json.
No soy muy conocedor del json, como leerlo y mostrarlo, así que sepan disculpar mi ignorancia si me cuesta entender sus respuestas.

Yendo al punto, lo que sucede es que tengo que acceder a un json, que no es un archivo sino una URL que me devuelve el objeto json; y una vez accedido leerlo y evaluar ciertos valores específicos, y tomar acción de acuerdo a eso.

Hasta ahora he podido acceder al json y leer todo el contenido, pero entiendo como logar identificar un valor (o varios) en particular, que me interesa, y leerlo, para luego enviar ese valor como parámetro a una función (que ya esta hecha y funciona correctamente).

Les dejo el codigo JavaScript para leer el json, que esta hecho con ajax.jQuery. Y más abajo el resultado de esa lectura.

jQuery:
Código Javascript:
Ver original
  1. $.ajax({
  2.         // URL a la que se enviará la solicitud Ajax
  3.         url: 'http://ws44403:81/api/generador',
  4.         //Cambiar a type: POST si necesario
  5.         type: "GET",
  6.         // Formato de datos que se espera en la respuesta
  7.         dataType: 'json',
  8.         // Conexion Asincrona
  9.         async: true,
  10.         })
  11.         .done(function json2txt(obj, path){
  12.             var txt = '';
  13.             for (var key in obj)
  14.             {
  15.                 if (obj.hasOwnProperty(key))
  16.                 {
  17.                     if ('object' == typeof(obj[key]))
  18.                     {
  19.                         txt += json2txt(obj[key], path + (path ? ' ---> ' : '') + key);
  20.                         console.log("Key: " + key); //No se usa
  21.                     }
  22.                     else
  23.                     {
  24.                         txt += path + ' --valor-> ' + key + ' <> ' + obj[key] + '<br>';
  25.                         console.log("Value: " + key + obj[key]);//No se usa
  26.                     }
  27.                 }
  28.             }
  29.            
  30.             $('#results').append(txt);
  31.        
  32.     })
  33.     .fail(function( jqXHR, textStatus, errorThrown ) {
  34.         if ( console && console.log ) {
  35.             console.log( "Algo ha fallado: " +  textStatus );
  36.         }
  37.     });


Resultado en pantalla:
Código:
success ---> 0 ---> entrada ---> frecuencia --valor-> valorMin <> 48.5
success ---> 0 ---> entrada ---> frecuencia --valor-> valorMax <> 51.5
undefinedsuccess ---> 0 ---> entrada ---> frecuencia --valor-> claseR <> ok
success ---> 0 ---> entrada ---> frecuencia --valor-> claseS <> sd
success ---> 0 ---> entrada ---> frecuencia --valor-> claseT <> sd
undefinedundefinedundefinedundefinedsuccess ---> 0 ---> entrada ---> frecuencia --valor-> FrecuenciaSalida <> 0
success ---> 0 ---> entrada ---> frecuencia --valor-> FrecR <> 49,9
success ---> 0 ---> entrada ---> frecuencia --valor-> FrecS <> 0
success ---> 0 ---> entrada ---> frecuencia --valor-> FrecT <> 0
success ---> 0 ---> entrada ---> voltaje --valor-> valorMin <> 180
success ---> 0 ---> entrada ---> voltaje --valor-> valorMax <> 280
success ---> 0 ---> entrada ---> voltaje --valor-> claseVr <> ok
success ---> 0 ---> entrada ---> voltaje --valor-> claseVs <> ok
success ---> 0 ---> entrada ---> voltaje --valor-> claseVt <> ok
undefinedundefinedundefinedsuccess ---> 0 ---> entrada ---> voltaje --valor-> VR <> 229
success ---> 0 ---> entrada ---> voltaje --valor-> VS <> 231
success ---> 0 ---> entrada ---> voltaje --valor-> VT <> 231
undefinedundefinedsuccess ---> 0 ---> salida ---> frecuencia --valor-> valorMin <> 48.5
success ---> 0 ---> salida ---> frecuencia --valor-> valorMax <> 51.5
success ---> 0 ---> salida ---> frecuencia --valor-> claseSalida <> error
success ---> 0 ---> salida ---> frecuencia --valor-> claseR <> sd
success ---> 0 ---> salida ---> frecuencia --valor-> claseS <> sd
success ---> 0 ---> salida ---> frecuencia --valor-> claseT <> sd
success ---> 0 ---> salida ---> frecuencia --valor-> aclaracionSalida <> El valor es menor al mínimo permitido.
undefinedundefinedundefinedsuccess ---> 0 ---> salida ---> frecuencia --valor-> FrecuenciaSalida <> 0
success ---> 0 ---> salida ---> frecuencia --valor-> FrecR <> 0
success ---> 0 ---> salida ---> frecuencia --valor-> FrecS <> 0
success ---> 0 ---> salida ---> frecuencia --valor-> FrecT <> 0
success ---> 0 ---> salida ---> voltaje --valor-> valorMin <> 180
success ---> 0 ---> salida ---> voltaje --valor-> valorMax <> 280
success ---> 0 ---> salida ---> voltaje --valor-> claseVr <> error
success ---> 0 ---> salida ---> voltaje --valor-> claseVs <> error
success ---> 0 ---> salida ---> voltaje --valor-> claseVt <> error
success ---> 0 ---> salida ---> voltaje --valor-> aclaracionR <> El valor es menor al mínimo permitido.
success ---> 0 ---> salida ---> voltaje --valor-> aclaracionS <> El valor es menor al mínimo permitido.
success ---> 0 ---> salida ---> voltaje --valor-> aclaracionT <> El valor es menor al mínimo permitido.
success ---> 0 ---> salida ---> voltaje --valor-> VR <> 0
success ---> 0 ---> salida ---> voltaje --valor-> VS <> 0
success ---> 0 ---> salida ---> voltaje --valor-> VT <> 0
success ---> 0 ---> salida ---> corriente --valor-> valorMin <> 0
success ---> 0 ---> salida ---> corriente --valor-> valorMax <> 0
success ---> 0 ---> salida ---> corriente --valor-> claseIr <> ok
success ---> 0 ---> salida ---> corriente --valor-> claseIs <> ok
success ---> 0 ---> salida ---> corriente --valor-> claseIT <> ok
undefinedundefinedundefinedsuccess ---> 0 ---> salida ---> corriente --valor-> IR <> 0
success ---> 0 ---> salida ---> corriente --valor-> IS <> 0
success ---> 0 ---> salida ---> corriente --valor-> IT <> 0
success ---> 0 ---> salida ---> carga --valor-> claseR <> sd
success ---> 0 ---> salida ---> carga --valor-> claseS <> sd
success ---> 0 ---> salida ---> carga --valor-> claseT <> sd
undefinedundefinedundefinedsuccess ---> 0 ---> salida ---> carga --valor-> CargaR <> 0
success ---> 0 ---> salida ---> carga --valor-> CargaS <> 0
success ---> 0 ---> salida ---> carga --valor-> CargaT <> 0
undefinedundefinedundefinedundefinedundefinedsuccess ---> 0 ---> estado --valor-> claseVoltBat <> ok
success ---> 0 ---> estado --valor-> claseNivelComb <> ok
success ---> 0 ---> estado --valor-> claseTempMotor <> ok
success ---> 0 ---> estado --valor-> claseEstado <> ok
success ---> 0 ---> estado --valor-> valorMinBateria <> 22
success ---> 0 ---> estado --valor-> valorMinFuel <> 30
success ---> 0 ---> estado --valor-> tempMinMotor <> 40
success ---> 0 ---> estado --valor-> Estado <> Automático
success ---> 0 ---> estado --valor-> VoltajeBateria <> 26,5
success ---> 0 ---> estado --valor-> NivelFuel <> 100
success ---> 0 ---> estado --valor-> TempMotor <> 56
success ---> 0 ---> estado --valor-> OilPres <> 5
success ---> 0 ---> estado --valor-> Alarma <> Null
success ---> 0 --valor-> id <> 14
success ---> 0 --valor-> nombre <> Generador GDC1
success ---> 0 --valor-> ip <> 10.48.100.50
undefinedundefinedundefinedundefined
Basicamente necesito acceder a valores como claseR, claseVr, claseVs, entre otros.

Desde ya gracias a los puedan dar una ayuda.
Saludos.
__________________
Mike Sto - Programador web independiente
Grupo Latin.net

JSFiddle

Última edición por elmouse19; 14/06/2016 a las 15:02
  #2 (permalink)  
Antiguo 14/06/2016, 15:02
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba, Argentina
Mensajes: 74
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: Acceso a valores de un json

La estructura de datos que me dijeron que tiene el json es esta:
Código:
public class EquipoDisplay
    {
        public int id
        public string nombre 
        public string ip 
        public Salida salida 
        public Entrada entrada
        public Bateria bateria 
    }
public class Salida
    {
        public Frecuencia frecuencia
        public Voltaje voltaje 
        public Corriente corriente 
        public Potencia potencia 
        public Carga carga 
    }
public class Entrada
    {
        public Frecuencia frecuencia 
        public Voltaje voltaje 
    }
public class Bateria
    {       
        public decimal capacidadMinima 
        public string claseV 
        public string claseC 
        public string claseCap 
        public string Voltaje        
        public string Corriente        
        public string Capacidad 
    }
public class Voltaje
    {       
        public decimal valorMin
        public decimal valorMax 
        public string claseVr 
        public string claseVs 
        public string claseVt               
        public string VR        
        public string VS        
        public string VT        
    }
public class Corriente
    {        
        public decimal valorMin 
        public decimal valorMax 
        public string claseIr 
        public string claseIs 
        public string claseIT         
        public string IR        
        public string IS        
        public string IT        
    }
public class Frecuencia
        
        public decimal valorMin
        public decimal valorMax 
        public string claseSalida 
        public string claseR 
        public string claseS 
        public string claseT                 
        public string FrecuenciaSalida        
        public string FrecR        
        public string FrecS        
        public string FrecT        
    }
public class Potencia
    {        
        public decimal valorMin
        public decimal valorMax 
        public string clasePr 
        public string clasePs 
        public string clasePt         
        public string PowerR        
        public string PowerS        
        public string PowerT
        
    }
public class Carga
    {        
        public string claseR 
        public string claseS 
        public string claseT
        
        public string CargaR
        
        public string CargaS
        
        public string CargaT        
    }
public class EquipoGenerador
    {        
        public int id
        public string nombre 
        public string ip 
        public Entrada entrada 
        public Salida salida 
        public EstadoGenerador estado 
    }
public class EstadoGenerador
    {       
        public string claseVoltBat
        public string claseNivelComb
        public string claseTempMotor 
        public string claseEstado
        public string valorMinBateria
        public string valorMinFuel 
        public string tempMinMotor
        public string Estado        
        public string VoltajeBateria 
        public string NivelFuel 
        public string TempMotor        
        public string OilPres        
    }
public class EquipoSensor
    {
        public int idEquipo 
        public string nombre 
        public string comunity
        public string ip 
        public List<Sensor> sensores 
    }
public class Sensor
    {
        public Medicion nombre 
        public Medicion temperatura 
        public Medicion humedad 
        public Medicion alarma 
    }
public class Medicion
    {
        public string oid 
        public string valor
    }
__________________
Mike Sto - Programador web independiente
Grupo Latin.net

JSFiddle
  #3 (permalink)  
Antiguo 14/06/2016, 16:49
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba, Argentina
Mensajes: 74
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: Acceso a valores de un json

Esta es una imagen de la estructura de datos ordenada.

En el ejemplo que use antes, estoy llamando a un objeto que contiene el los valore de la clase EquipoGenerador

__________________
Mike Sto - Programador web independiente
Grupo Latin.net

JSFiddle
  #4 (permalink)  
Antiguo 21/06/2016, 13:30
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba, Argentina
Mensajes: 74
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: Acceso a valores de un json

Alguien podria darme una mano?
__________________
Mike Sto - Programador web independiente
Grupo Latin.net

JSFiddle
  #5 (permalink)  
Antiguo 21/06/2016, 14:28
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba, Argentina
Mensajes: 74
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: Acceso a valores de un json

Al final lo pude hacer andar de esta forma.

Código Javascript:
Ver original
  1. $.ajax({
  2.         // URL a la que se enviará la solicitud Ajax
  3.         url: 'http://ws44403:81/api/generador',
  4.         //Cambiar a type: POST si necesario
  5.         type: "GET",
  6.         // Formato de datos que se espera en la respuesta
  7.         dataType: 'json',
  8.         // Conexion Asincrona
  9.         async: true,
  10.         })
  11.         .done(function json2txt(obj, path){
  12.             var txt = obj;
  13.            
  14.             var salidavr = txt[0].entrada.voltaje.claseVr;
  15.             var salidavt = txt[0].entrada.voltaje.claseVt;
  16.            
  17.             $('#results').append(salidavr+' '+salidavt);
  18.        
  19.     })
  20.     .fail(function( jqXHR, textStatus, errorThrown ) {
  21.         if ( console && console.log ) {
  22.             console.log( "Algo ha fallado: " +  textStatus );
  23.         }
  24.     });

Ojala que a alguien le sirva de ayuda.
__________________
Mike Sto - Programador web independiente
Grupo Latin.net

JSFiddle

Etiquetas: ajax, funcion, js, json, objeto, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:31.