Foros del Web » Programando para Internet » PHP »

Problema para crear un JSON

Estas en el tema de Problema para crear un JSON en el foro de PHP en Foros del Web. Buenas, He creado un script para recorrer un directorio y que los archivos encontrados queden almacenados en formato json, el código es el siguiente: @import ...
  #1 (permalink)  
Antiguo 17/08/2015, 09:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años
Puntos: 3
Pregunta Problema para crear un JSON

Buenas,

He creado un script para recorrer un directorio y que los archivos encontrados queden almacenados en formato json, el código es el siguiente:

Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: application/json');
  3.  
  4. $path = $_SERVER['DOCUMENT_ROOT']."/cms/img/";
  5.  
  6.     $dir = opendir($path);
  7.    
  8.     while ($archivo = readdir($dir)) {
  9.    
  10.         if ( $archivo != '.' && $archivo != '..') {
  11.  
  12.             $data = json_encode($archivo);
  13.    
  14.             echo $data;
  15.    
  16.         }
  17.    
  18.     }
  19. ?>

El problema es que en pantalla me genera el siguiente código:
Código JSON:
Ver original
  1. "asturias""navarra""tenerife"

Y mi objetivo es generar una estructura similar a ésta:

Código JSON:
Ver original
  1. {"nombre":"asturias","nombre":"navarra","nombre":"tenerife"}

¿Cómo puedo hacerlo?

Gracias por anticipado.
  #2 (permalink)  
Antiguo 17/08/2015, 09:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema para crear un JSON

El problema es que estás imprimiendo los datos mientras recorres las lista: ese es el error.

Debes acumular los datos en un array, y al final aplicar json_encode() sobre dicho array.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/08/2015, 09:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años
Puntos: 3
Respuesta: Problema para crear un JSON

Ahora lo he cambiado de esta manera:
Código PHP:
Ver original
  1. <?php
  2. //sleep(5);
  3. header('Content-Type: application/json');
  4.  
  5. $path = $_SERVER['DOCUMENT_ROOT']."/cms/img/";
  6.  
  7.     $dir = opendir($path);
  8.    
  9.     while ($archivo = readdir($dir)) {
  10.  
  11.         if ( $archivo != '.' && $archivo != '..' && $archivo != 'loader.gif') {
  12.  
  13.             $datos = array("nombre" => $archivo);
  14.  
  15.             echo json_encode($datos);
  16.                
  17.         }
  18.    
  19.     }
  20. ?>

Y en pantalla imprime :
Código JSON:
Ver original
  1. {"nombre":"asturias"}
  2. {"nombre":"navarra"}
  3. {"nombre":"tenerife"}

Pero me falta añadir la coma al final. Por ej. {nombre:asturias}, ¿Cómo puedo añadirla?
  #4 (permalink)  
Antiguo 17/08/2015, 10:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema para crear un JSON

Sigues sin acumular nada, repites json_encode() en cada vuelta del while() y ese sigue siendo un error.

Acumula los arrays que creas dentro del while() en otro array auxiliar, al finalizar el while() es dicho array auxiliar el acumulado de todo.

Piensa un poco más cómo haces las cosas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: json
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 13:46.