Foros del Web » Programando para Internet » PHP »

Leer una cadena JSON desde PHP

Estas en el tema de Leer una cadena JSON desde PHP en el foro de PHP en Foros del Web. Hola. Tengo guardada en una variable la siguiente cadena: Código PHP: $cadena  =  '[                   {"partes":[                                {"txt":"Primer texto", "tipo":"8", "id":"0"},                                           {"txt":"importe", "tipo":"1", "id":"47"},                                {"txt":"€.", "tipo":"8", "id":"0"}                              ]                   },                   {"partes":[                                {"txt":"Base reguladora", "tipo":"8", "id":"0"},                                 {"txt":"BR_2013", "tipo":"6", "id":"5"},                                {"txt":"x", "tipo":"8", "id":"0"},                                 {"txt":"salario_regulador", "tipo":"1", "id":"45"} ...
  #1 (permalink)  
Antiguo 03/12/2013, 13:47
 
Fecha de Ingreso: octubre-2011
Ubicación: Elche
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Leer una cadena JSON desde PHP

Hola. Tengo guardada en una variable la siguiente cadena:

Código PHP:
$cadena '[
                  {"partes":[
                               {"txt":"Primer texto", "tipo":"8", "id":"0"},           

                               {"txt":"importe", "tipo":"1", "id":"47"},

                               {"txt":"€.", "tipo":"8", "id":"0"}
                             ]
                  },

                  {"partes":[
                               {"txt":"Base reguladora", "tipo":"8", "id":"0"}, 

                               {"txt":"BR_2013", "tipo":"6", "id":"5"},

                               {"txt":"x", "tipo":"8", "id":"0"}, 

                               {"txt":"salario_regulador", "tipo":"1", "id":"45"}
                             ]
                  },

                  {"partes":[
                               {"txt":"Párrafo de prueba.", "tipo":"8", "id":"0"}
                             ]
                  }
               ]'

El caso es que quiero acceder a los datos guardados desde PHP. He utilizado json_decode, pero lo máximo que he podido conseguir es saber el número de "partes" que conforman la cadena. El código que he utilizado es el siguiente:

Código PHP:
$json json_decode($cadena);
$parrafos count($json);
for (
$i 0$i $parrafos$i++){
    
$parrafo $json[$i];
    
$j 0;
    while (
$parrafo->partes[$j] != null){
        
$parte $parrafo->partes[$j]        
        
$j++;
    }

Ni que decir tiene que el navegador me envía a tomar viento. ¡Y no sé qué hacer! Los tutoriales de JSON en PHP que me he encontrado en Internet no me aclaran nada. ¿Podría alguien, por favor, escribir el código en PHP necesario para poder leer todos los datos? Soy bastante novato en esto (de hecho, soy un estudiante de DAW) y ando un poco perdido.

Gracias por adelantado y un saludo a todos.
  #2 (permalink)  
Antiguo 03/12/2013, 13:51
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Leer una cadena JSON desde PHP

Imprime el arreglo de $json,

Código PHP:
echo '<pre>';
print_r($json); 
y asi podras ver como esta estructurados los datos y puedas manipularlos, cualquier duda aqui andamos.
__________________
Hasta que el hombre no es nada, Dios no puede hacer nada con el.
  #3 (permalink)  
Antiguo 03/12/2013, 14:04
 
Fecha de Ingreso: octubre-2011
Ubicación: Elche
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Leer una cadena JSON desde PHP

Gracias por contestarme, Alvidales. Ya había hecho lo que me dices, pero no me ha servido de mucho, porque no sé cómo acceder al contenido de los objetos stdClass Object. Intento hacerlo como si fuera un array, pero, obviamente, está mal. ¿Puedes echarme una mano?

Un saludo.
  #4 (permalink)  
Antiguo 03/12/2013, 14:07
Avatar de fcarrizalest  
Fecha de Ingreso: diciembre-2013
Mensajes: 10
Antigüedad: 10 años, 4 meses
Puntos: 2
Respuesta: Leer una cadena JSON desde PHP

Pues viendo tu código practicamente ya tienes todo lo necesario para poder acceder al contenido de tu json.


Código PHP:
$cadena '[ 
                  {"partes":[ 
                               {"txt":"Primer texto", "tipo":"8", "id":"0"},            

                               {"txt":"importe", "tipo":"1", "id":"47"}, 

                               {"txt":"€.", "tipo":"8", "id":"0"} 
                             ] 
                  }, 

                  {"partes":[ 
                               {"txt":"Base reguladora", "tipo":"8", "id":"0"},  

                               {"txt":"BR_2013", "tipo":"6", "id":"5"}, 

                               {"txt":"x", "tipo":"8", "id":"0"},  

                               {"txt":"salario_regulador", "tipo":"1", "id":"45"} 
                             ] 
                  }, 

                  {"partes":[ 
                               {"txt":"Párrafo de prueba.", "tipo":"8", "id":"0"} 
                             ] 
                  } 
               ]'




$json json_decode($cadena); 


$parrafos count($json); 
for (
$i 0$i $parrafos$i++){ 
    
$parrafo $json[$i]; 

    
$j 0
    while (
$parrafo->partes[$j] != null){

             
$parte $parrafo->partes[$j] ;
             
$j++;

             echo 
"<br>txt: " .  $parte->txt ;
             echo 
"<br>tipo: "$parte->tipo;
             echo 
"<br>id: " .$parte->id ;
             
             echo 
'<br><br>';
             
    }




La verdad solo puedo recomendarte que tenga cuidado con el encoding a veces da problemas. Trata que el json este correctamente estructurado. si no lo esta también da problemas. En el mundo de maravilla a como lo esta no genera ningún error.

Saludos~
  #5 (permalink)  
Antiguo 03/12/2013, 14:12
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Leer una cadena JSON desde PHP

Conviertelo en un array en.vez de.un.objeto es mas facil de manipular
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #6 (permalink)  
Antiguo 03/12/2013, 14:15
 
Fecha de Ingreso: octubre-2011
Ubicación: Elche
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Leer una cadena JSON desde PHP

Hola, fcarrizalest, y gracias por contestarme, pero no me funciona el código así. Me da el siguiente error:

Notice: Undefined property: stdClass::$parts in C:\xampp\htdocs\php\json.php on line 38

que es la línea del while.
  #7 (permalink)  
Antiguo 03/12/2013, 14:17
 
Fecha de Ingreso: octubre-2011
Ubicación: Elche
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Leer una cadena JSON desde PHP

xSkArx, y cómo puedo hacer eso? Gracias.
  #8 (permalink)  
Antiguo 03/12/2013, 14:26
Avatar de fcarrizalest  
Fecha de Ingreso: diciembre-2013
Mensajes: 10
Antigüedad: 10 años, 4 meses
Puntos: 2
Respuesta: Leer una cadena JSON desde PHP

Cita:
Iniciado por Tortuguica Ver Mensaje
Hola, fcarrizalest, y gracias por contestarme, pero no me funciona el código así. Me da el siguiente error:

Notice: Undefined property: stdClass::$parts in C:\xampp\htdocs\php\json.php on line 38

que es la línea del while.
A vaya y me pregunto si lo copiaste y pegaste o lo volviste a escribir lo digo por el mensaje
stdClass::$parts donde deberia ser partes.

para convertir todo a arreglo en la documentación te dice como.

http://us3.php.net/manual/es/function.json-decode.php

Resumiendo solo agregas un true. y listo

Código PHP:

$json 
json_decode($cadena,true);  
echo 
'<pre>';
print_r($json);
echo 
'</pre>'

Saludos~
  #9 (permalink)  
Antiguo 03/12/2013, 14:33
Avatar de alvidales  
Fecha de Ingreso: febrero-2012
Mensajes: 108
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Leer una cadena JSON desde PHP

Con esto ya deberia de funcionarte.

Código PHP:
$json json_decode($cadena);
$parrafos count($json);
for (
$i 0$i $parrafos$i++){
    
$parrafo $json[$i];
    foreach (
$parrafo->partes as $parte) {
        
//aqui sacas txt, tipo e id.
        
echo $parte->txt;
        echo 
'<br>';
        echo 
$parte->tipo;
        echo 
'<br>';
        echo 
$parte->id;
        echo 
'<br>';
    }

__________________
Hasta que el hombre no es nada, Dios no puede hacer nada con el.
  #10 (permalink)  
Antiguo 03/12/2013, 14:42
 
Fecha de Ingreso: octubre-2011
Ubicación: Elche
Mensajes: 6
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Leer una cadena JSON desde PHP

Ese código sí me ha funcionado, Alvidales. Muchísimas gracias!

Y, fcarrizalest, sí tienes razón, jeje: es que yo soy un poco petardo y me gusta ponerle los nombres a las variables en inglés, pero las he traducido al castellano para enseñaros el código porque me daba un poco de corte. Y mira, al final, se ha enterado todo el mundo!

Gracias a todos por vuestro interés. Os dejo, que ya me toca ir a cenar.

Un saludo.

Etiquetas: cadena, 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 20:25.