Foros del Web » Programando para Internet » PHP »

Convertir json en arreglo

Estas en el tema de Convertir json en arreglo en el foro de PHP en Foros del Web. Buenos dias, estoy pasando unos datos por ajax en formato en json, los datos que contiene son los siguientes: {"tipo":"DISTRIBUCION","alcance":"CENTRO DE TRANS","defecto":"CC04632","circuito":"MOR-04","sector":"GENOVES","kvas":"125","kms":"1,11"," clientes":"57","causa":"LINEA ROTA","equipoa":"CC04632","equipoc":"CC04632","dur acion":"00:22:00","ttik":"0,00008","fmik":"0,00512 ...
  #1 (permalink)  
Antiguo 27/05/2013, 09:35
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Convertir json en arreglo

Buenos dias, estoy pasando unos datos por ajax en formato en json, los datos que contiene son los siguientes:

{"tipo":"DISTRIBUCION","alcance":"CENTRO DE TRANS","defecto":"CC04632","circuito":"MOR-04","sector":"GENOVES","kvas":"125","kms":"1,11"," clientes":"57","causa":"LINEA ROTA","equipoa":"CC04632","equipoc":"CC04632","dur acion":"00:22:00","ttik":"0,00008","fmik":"0,00512 ","direccion":"C/ FERMIN, FTE AL AUTOLAVADO LA BURBUJA"}

y en php tengo el siguiente codigo:

Código PHP:
<?php

$data 
json_decode($_POST['enviar2'], true);
var_dump($data);
$conexion mysql_connect("localhost","root","admin");
if(!
$conexion){
die(
'No he podido conectar: '.mysql_error());
}

$numero$data["equipoc"];
$letra $data["equipoa"];

mysql_select_db("interrupciones",$conexion);
$peticion mysql_query("insert into prueba1 (numero,letra) values('".$numero."','".$letra."')");

mysql_close($conexion);
?>
quiero convertir ese cadena json en un arreglo pero siempre me sale vacio una vez que hago el json_encode. espero que me puedan ayudar gracias.
  #2 (permalink)  
Antiguo 27/05/2013, 09:40
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Convertir json en arreglo

consulta la documentación: http://php.net/manual/es/function.json-decode.php

según veo intentas pasarlos de forma asociativa, aunque el problema puede deberse a un JSON mal formado, primero pasa el json por un analizador para descartar.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 27/05/2013, 10:04
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Respuesta: Convertir json en arreglo

ya he consultado la documentacion y el json esta bien formado, sin embargo aun no puedo obtener los datos
  #4 (permalink)  
Antiguo 27/05/2013, 10:08
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Convertir json en arreglo

realiza un var_dump($_POST['enviar2']); para ver que tienes, porque probé con tu json y me funciona perfectamente, me parece que el problema puede estar en la codificación ¿usas UTF8?.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 27/05/2013, 10:40
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Respuesta: Convertir json en arreglo

el var_dump me da lo siguiente:

{"tipo":"DISTRIBUCION","alcance":"CENTRO DE TRANS","defecto":"CC00282","circuito":"LMI-11","sector":"EL PALITO","kvas":"112","kms":"0,32","clientes":"78", "causa":"BAJANTES DA?ADO","equipoa":"CC00282","equipoc":"CC00282","d uracion":"00:00:00","ttik":"0,00021","fmik":"0,013 15","direccion":"S/ PUERTO ESCONDIDO, EL PALITO"}

por lo que creo que esta bien, con respecto a la codificacion en la pagina de donde mando el json en el head del html si tengo seleccionado utf8
  #6 (permalink)  
Antiguo 27/05/2013, 11:10
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Respuesta: Convertir json en arreglo

Realize lo siguiente y el valor de $data sigue estando vacio, sino utilizo el json_decode si tengo mi cadena json como me la manda javascript.

<?php

$data = json_decode(utf8_encode($_POST['enviar2']));
var_dump($data);
$conexion = mysql_connect("localhost","root","admin");
if(!$conexion){
die('No he podido conectar: '.mysql_error());
}

$numero= $data;
$letra = $data;

mysql_select_db("interrupciones",$conexion);
$peticion = mysql_query("insert into prueba1 (numero,letra) values('".$numero."','".$letra."')");

mysql_close($conexion);
?>
  #7 (permalink)  
Antiguo 27/05/2013, 11:53
 
Fecha de Ingreso: abril-2012
Mensajes: 124
Antigüedad: 12 años
Puntos: 3
Respuesta: Convertir json en arreglo

En el primer mensaje había este código:

Código PHP:
$numero$data["equipoc"];
$letra $data["equipoa"]; 
y en el último creo que olvidas algo

Código PHP:
$numero$data;
$letra $data
Si el var_dump($data) funciona bien puedes probar echo $data["equipoc"]; a ver si guarda los valores correctos.
  #8 (permalink)  
Antiguo 27/05/2013, 12:02
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Respuesta: Convertir json en arreglo

no importa lo que haga o como lo ponga, si uso la funcion json_decode todo se borra, no hay una forma de poder saber el error?
  #9 (permalink)  
Antiguo 27/05/2013, 15:40
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 11 años
Puntos: 0
Respuesta: Convertir json en arreglo

he revisado todo y el json llega bien y esta bien codificado, pero el json_decode lo daña, he pasado la variable mediante una variable de session a otra pagina php y ahi si lo lee bien, incluso si pongo creo una variable y le asigno la cadena json si puedo utilizar el json_decode sin problemas, por favor ayudenme, estoy desesperado.
  #10 (permalink)  
Antiguo 17/06/2013, 23:24
 
Fecha de Ingreso: junio-2013
Ubicación: Lomas de Zamora
Mensajes: 6
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Convertir json en arreglo

Lograstes solucionarlo? estoy teniendo exactamente el mismo problema.

Etiquetas: arreglo, json, mysql, select
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 08:00.