Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error al leer una variable json

Estas en el tema de Error al leer una variable json en el foro de PHP en Foros del Web. Hola, Estoy intentando leer un json y consigo tener todas las variables que quiero pero tengo un problema en una de ellas: Código PHP: "weather" ...
  #1 (permalink)  
Antiguo 25/01/2016, 07:11
 
Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 2 meses
Puntos: 1
Error al leer una variable json

Hola,

Estoy intentando leer un json y consigo tener todas las variables que quiero pero tengo un problema en una de ellas:

Código PHP:
"weather":[{"id":500,"main":"Rain","description":"lluvia ligera","icon":"10d"}],
"clouds":{"all":0},
"wind":{"speed":2.41,"deg":211.502},
"rain":{"3h":0.01}] 
Consigo leer las variables de weather, clouds, wind pero no la de rain.

Para leerlo tengo lo siguiente:
Código PHP:
$lluvia $json->rain->3h
El problema es el "3h", el propio editor (dreamweaver), me dice que hay un error de sintaxis en el 3, si borro el 3, se quita el error. Estoy iniciándome en esto y no sé qué problema hay.

Gracias.
  #2 (permalink)  
Antiguo 25/01/2016, 09:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al leer una variable json

Normalmente no puedes nombrar nada con un número al inicio en PHP, ese es el detalle.

Lo solucionarías también así:
Código PHP:
Ver original
  1. $foo->{'3h'};
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/01/2016, 11:58
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: Error al leer una variable json

Tu json está mal estructurado, prueba con esto:
Código Javascript:
Ver original
  1. {
  2.     "weather": {
  3.         "id": 500,
  4.         "main": "Rain",
  5.         "description": "lluvia ligera",
  6.         "icon": "10d"
  7.     },
  8.     "clouds": {
  9.         "all": 0
  10.     },
  11.     "wind": {
  12.         "speed": 2.41,
  13.         "deg": 211.502
  14.     },
  15.     "rain": {
  16.         "3h": 0.01
  17.     }
  18. }
  #4 (permalink)  
Antiguo 25/01/2016, 17:04
 
Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Error al leer una variable json

Cita:
Iniciado por carlillos Ver Mensaje
Tu json está mal estructurado...
Gracias, el json está bien, lo único que sólo he copiado el trozo donde aparece la variable que quiero leer.


Cita:
Iniciado por pateketrueke Ver Mensaje
Normalmente no puedes nombrar nada con un número al inicio en PHP, ese es el detalle.
Gracias pero...¿Cómo se supone que debo ponerlo?

Si la velocidad del viento la puedo sacar así:
Código PHP:
$viento $json->wind->speed
¿Cómo uso el código que me indicas para sacar la lluvia?
Código PHP:
$foo->{'3h'};
$lluvia $json->rain->$foo
Perdona mi ignorancia
  #5 (permalink)  
Antiguo 25/01/2016, 18:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error al leer una variable json

En el caló del programador "foo" representaría cualquier cosa, eso sería tu variable pues:
Código PHP:
Ver original
  1. $foo->{'3h'} === $json->rain->{'3h'};
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 25/01/2016, 19:40
Avatar de gersveo  
Fecha de Ingreso: julio-2008
Mensajes: 145
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Error al leer una variable json

intenta...
Código PHP:
Ver original
  1. echo $lluvia = $json->rain['3h'];

Y lo del error es porque una variable no debe iniciar númerica....
  #7 (permalink)  
Antiguo 26/01/2016, 02:21
 
Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Error al leer una variable json

No funciona. Este es mi código para leer las demás variables:
Código PHP:
for($i =0$i<35$i++){
        
$fecha_hora2 $json2->list[$i]->dt_txt;
        
$fecha_hora_formato2 = (substr($fecha_hora2,8,2)).'/'.(substr($fecha_hora2,5,2)).' - '.(substr($fecha_hora2,11,5));
        
$temp2 $json2->list[$i]->main->temp;
        
$tempmax2 $json2->list[$i]->main->temp_max;
        
$tempmin2 $json2->list[$i]->main->temp_min;
        
$presion2 $json2->list[$i]->main->pressure;
        
$humedad2 $json2->list[$i]->main->humidity;
        
$vel_viento2 $json2->list[$i]->main->temp;

        
$estado_cielo2 $json2->list[$i]->weather[0]->main;
        
$descripcion2 $json2->list[$i]->weather[0]->description;
        
$icono_cielo2 $json2->list[$i]->weather[0]->icon;
}

echo 
$temp2//etc.// 
La variable rain está dentro de list también, así que pongo:
Código PHP:
$foo->{'3h'} === $json2->list[+i]->rain->{'3h'}; 
Y me dar el siguiente error:
Notice: Undefined variable: foo in....

Última edición por orcajavi; 26/01/2016 a las 02:25 Razón: Mensaje incompleto
  #8 (permalink)  
Antiguo 26/01/2016, 11:21
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: Error al leer una variable json

No escribas $foo, reemplázalo por tu variable.

Código PHP:
Ver original
  1. $lluvia = $json->rain->{'3h'};
  #9 (permalink)  
Antiguo 26/01/2016, 11:27
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Error al leer una variable json

Cita:
Iniciado por orcajavi Ver Mensaje
"weather":[{"id":500,"main":"Rain","description":"lluvia ligera","icon":"10d"}],
"clouds":{"all":0},
"wind":{"speed":2.41,"deg":211.502},
"rain":{"3h":0.01}]
Por lo que veo tienes dos corchetes abriendo, y uno solo cerrando.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #10 (permalink)  
Antiguo 26/01/2016, 11:32
Avatar de carlillos  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 245
Antigüedad: 17 años, 2 meses
Puntos: 21
Respuesta: Error al leer una variable json

Cita:
Iniciado por orcajavi Ver Mensaje
La variable rain está dentro de list también, así que pongo:
Código PHP:
$foo->{'3h'} === $json2->list[+i]->rain->{'3h'}; 
Y me dar el siguiente error:
Notice: Undefined variable: foo in....
Código PHP:
Ver original
  1. $json->rain->{'3h'} === $json2->list[+i]->rain->{'3h'};
  #11 (permalink)  
Antiguo 27/01/2016, 03:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Error al leer una variable json

Nada, pruebo vuestros códigos pero no me funciona, no sé si es que tengo que añadir algo más

A ver si es que no me aclaro. Este es el código que tengo para presentar la temperatura, y me funciona bien:
Código PHP:
$temp $json2->list[$i]->main->temp;
echo 
$temp
Para la lluvia debería usar lo mismo pero me da error:
Código PHP:
$lluvia $json2->list[$i]->rain->3h;
echo 
$lluvia
...porque no se puede poner un número al inicio, el caso del 3h. Hasta ahora, ninguno de los códigos que me habéis indicado me funciona, a menos que tenga que complementarlo con algo más, que vosotros deis por sentado y yo, desde mi ignorancia, lo esté omitiendo.
  #12 (permalink)  
Antiguo 27/01/2016, 07:14
Avatar de gersveo  
Fecha de Ingreso: julio-2008
Mensajes: 145
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: Error al leer una variable json

Las variables no pueden iniciar númerico...
El compilador no puede resolver eso... (puede comprenderse como una operación [+-/*] o una comparación [>,==, <])


Tu problema se resuelve así...
Código PHP:
$lluvia $json2->list[$i]->rain->{'3h'}; 
echo 
$lluvia
  #13 (permalink)  
Antiguo 27/01/2016, 13:52
 
Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Error al leer una variable json

Vale, me sale el siguiente mensaje:
Cita:
Notice: Undefined property: stdClass::$3h in...
pero funciona.

He puesto:
Código PHP:
error_reporting(0); 
para quitar el cartel de aviso y todo ok.

Creo que puedo darlo por solucionado.

Muchas gracias a todos.

Etiquetas: json, variable
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 03:02.