Foros del Web » Programando para Internet » PHP »

leer csv y retorna en json en array

Estas en el tema de leer csv y retorna en json en array en el foro de PHP en Foros del Web. Hola amigos tengo un problema estoy leyendo un csv con php asi: Código: $fp = fopen ("seleccion-DatLoc-2211.csv" , "r" ); //extra //$aDatos = fgetcsv( $fp, ...
  #1 (permalink)  
Antiguo 14/11/2011, 03:05
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Pregunta leer csv y retorna en json en array

Hola amigos tengo un problema estoy leyendo un csv con php
asi:

Código:
$fp = fopen ("seleccion-DatLoc-2211.csv" , "r" );

//extra
//$aDatos = fgetcsv( $fp, 1000, ",");
//print_r( $aDatos );
echo "<br>-------------------------<br>";

while (( $data = fgetcsv ($fp,1000,",")) !== FALSE ){
 
    $i = 0;
    foreach($data as $row) 
    {
    		
        echo "Campo $i: $row<br>";     
        $i++ ;
 
    } 
 
    echo "<br><br>";
 
}
fclose ( $fp );
pero quiero retornar con json
un array de esta forma

Código:
 $datoslist[] = array("CSVnombre" => $data[0],
				 "CSVrfc" =>"", 
				 "CSVnumext"  => "", 
				 "CSVcalle"  =>"", 
				 "CSVciudad" => "",
				"CSVcolonia" => "",
				"CSVnumint" => "",
				"CSVestado" => "",
				"CSVcpostal" => "",
				"CSVrefmail" => "",
				"CSVnomcontacto" => "",
				"CSVtelcontacto" => "",
				"CSVext" =>"",
				"CSVtelcontactoA" => "",
				"CSVtelcontactoB" => "",
				"CSVtelcontactoC" => ""
				);	
echo json_encode($datoslist);//retornamos los datos
como puedo vaciar los datos del csv usado esta estrutura de array no he podido
encontrar la solución tiene alguna idea.

gracias
espero sus comentarios amigos

saludos
__________________
gerardo
  #2 (permalink)  
Antiguo 14/11/2011, 07:02
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: leer csv y retorna en json en array

un JSON no debe tener entidades HTML como <br>, y de preferencia evitar saltos de línea.

si estás dumpeando salida (echo) directamente, sólo concentrate en generar una estructura JSON válida, olvídate de la función json_decode, no la necesitas
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 15/11/2011, 00:33
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Respuesta: leer csv y retorna en json en array

si gracias por responder
efectivamente comprendo tu punto
solo puse asi el codigo de lectura del csv
pero lo que hay en el csv son datos de nombres, numeros
etc

y me gustaria retornar un array con json del lado de php para que mi
aplicacion con jquery pueda leerla

saludos
__________________
gerardo
  #4 (permalink)  
Antiguo 15/11/2011, 07:08
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: leer csv y retorna en json en array

lee las especificaciones del formato JSON, y sobre todo la estructura que espera jQuery, JSON es un formato muy fácil de usar, no te tomará más de 30 minutos crear la cadena JSON que necesitas.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 15/11/2011, 11:10
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Respuesta: leer csv y retorna en json en array

bueno creo que omite algo que falta

Código:

$preinscribir = array("TokenForm" => "x",
		               "MsgForm" => "x",					   
		               "CampoForm" => $datoslist,//es el array de los datos de csv
				"AlertForm" => "x"
		);	    
echo json_encode($preinscribir);//retorno por json los datos
__________________
gerardo

Etiquetas: csv, json, retorna
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 12:05.