Tema: duda JSON
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/04/2010, 17:37
Nacho_astur
 
Fecha de Ingreso: abril-2009
Mensajes: 80
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda JSON

Ya yo tampoco entiendo que es lo que ocurre. Pero tampoco le puedo echar la culpa al json_encode() que hago en el lado del servicio web, porque para ver si funcionaba probe a hacer lo siguiente:

Código PHP:
$respuesta=array('Status'=>$errores,'Features'=>$datos'Found'=>$num'Bounds'=>$posicion);

    echo 
"respuesta sin codificar: ";print_r($respuesta);echo "<br><br>";
    
$respuesta=json_encode($respuesta);
    echo 
"respuesta codificada:";print_r($respuesta);echo "<br><br>";
    
$respuesta=json_decode($respuesta);
    echo 
"respuesta decodificada: ";print_r($respuesta);echo "<br><br>"

Y esto fue lo que salio por pantalla en el navegador:

respuesta sin codificar: Array ( [Status] => todo bien [Features] => Array ( [0] => Array ( [coordinates] => Array ( [Longitud] => -5.64246 [Latitud] => 43.5348 ) [properties] => Array ( [Nombre] => El buen paladar [Direccion] => Calle de Gregorio Marañón, 4, 33203 Gijón, Spain [Distancia] => 4873252 [Descripcion] => Se trata de un lugar especializado en las chuletas ) ) [1] => Array ( [coordinates] => Array ( [Longitud] => -5.65191 [Latitud] => 43.5391 ) [properties] => Array ( [Nombre] => la sardina saltarina [Direccion] => Calle de Menéndez Pelayo, Gijón, Spain [Distancia] => 4873833 [Descripcion] => establecimiento especializado en los manjares del mar ) ) [2] => Array ( [coordinates] => Array ( [Longitud] => -5.65145 [Latitud] => 43.5399 ) [properties] => Array ( [Nombre] => pizza movil [Direccion] => Calle de Emilio Tuya, 7, 33202 Gijón, Spain [Distancia] => 4873916 [Descripcion] => pizzeria asquerosa pero barata ) ) [3] => Array ( [coordinates] => Array ( [Longitud] => -5.65337 [Latitud] => 43.5349 ) [properties] => Array ( [Nombre] => la tabernona [Direccion] => Calle Ramón y Cajal, 20, 33204 Gijón, Spain [Distancia] => 4873388 [Descripcion] => especializada en las mejores cervezas ) ) [4] => Array ( [coordinates] => Array ( [Longitud] => -5.66601 [Latitud] => 43.5221 ) [properties] => Array ( [Nombre] => Zapico [Direccion] => Calle del Río Nervión, 23, 33210 Gijón, Spain [Distancia] => 4872124 [Descripcion] => Sidrería Zapico ) ) [5] => Array ( [coordinates] => Array ( [Longitud] => -5.64869 [Latitud] => 43.5368 ) [properties] => Array ( [Nombre] => Bahia [Direccion] => Calle de Piles, 3, 33203 Gijón, Spain [Distancia] => 4873543 [Descripcion] => hotel con vistas a la playa ) ) ) [Found] => 6 [Bounds] => Array ( [Limite norte] => 43.54000 [Limite sur] => 43.48677 [Limite este] => -5.69771 [Limite oeste] => -5.60898 ) )

respuesta codificada:{"Status":"todo bien","Features":[{"coordinates":{"Longitud":"-5.64246","Latitud":"43.5348"},"properties":{"Nombr e":"El buen paladar","Direccion":null,"Distancia":4873252,"Des cripcion":"Se trata de un lugar especializado en las chuletas"}},{"coordinates":{"Longitud":"-5.65191","Latitud":"43.5391"},"properties":{"Nombr e":"la sardina saltarina","Direccion":null,"Distancia":4873833,"D escripcion":"establecimiento especializado en los manjares del mar"}},{"coordinates":{"Longitud":"-5.65145","Latitud":"43.5399"},"properties":{"Nombr e":"pizza movil","Direccion":null,"Distancia":4873916,"Descr ipcion":"pizzeria asquerosa pero barata"}},{"coordinates":{"Longitud":"-5.65337","Latitud":"43.5349"},"properties":{"Nombr e":"la tabernona","Direccion":null,"Distancia":4873388,"D escripcion":"especializada en las mejores cervezas"}},{"coordinates":{"Longitud":"-5.66601","Latitud":"43.5221"},"properties":{"Nombr e":"Zapico","Direccion":null,"Distancia":4872124," Descripcion":null}},{"coordinates":{"Longitud":"-5.64869","Latitud":"43.5368"},"properties":{"Nombr e":"Bahia","Direccion":null,"Distancia":4873543,"D escripcion":"hotel con vistas a la playa"}}],"Found":6,"Bounds":{"Limite norte":"43.54000","Limite sur":"43.48677","Limite este":"-5.69771","Limite oeste":"-5.60898"}}

respuesta decodificada: stdClass Object ( [Status] => todo bien [Features] => Array ( [0] => stdClass Object ( [coordinates] => stdClass Object ( [Longitud] => -5.64246 [Latitud] => 43.5348 ) [properties] => stdClass Object ( [Nombre] => El buen paladar [Direccion] => [Distancia] => 4873252 [Descripcion] => Se trata de un lugar especializado en las chuletas ) ) [1] => stdClass Object ( [coordinates] => stdClass Object ( [Longitud] => -5.65191 [Latitud] => 43.5391 ) [properties] => stdClass Object ( [Nombre] => la sardina saltarina [Direccion] => [Distancia] => 4873833 [Descripcion] => establecimiento especializado en los manjares del mar ) ) [2] => stdClass Object ( [coordinates] => stdClass Object ( [Longitud] => -5.65145 [Latitud] => 43.5399 ) [properties] => stdClass Object ( [Nombre] => pizza movil [Direccion] => [Distancia] => 4873916 [Descripcion] => pizzeria asquerosa pero barata ) ) [3] => stdClass Object ( [coordinates] => stdClass Object ( [Longitud] => -5.65337 [Latitud] => 43.5349 ) [properties] => stdClass Object ( [Nombre] => la tabernona [Direccion] => [Distancia] => 4873388 [Descripcion] => especializada en las mejores cervezas ) ) [4] => stdClass Object ( [coordinates] => stdClass Object ( [Longitud] => -5.66601 [Latitud] => 43.5221 ) [properties] => stdClass Object ( [Nombre] => Zapico [Direccion] => [Distancia] => 4872124 [Descripcion] => ) ) [5] => stdClass Object ( [coordinates] => stdClass Object ( [Longitud] => -5.64869 [Latitud] => 43.5368 ) [properties] => stdClass Object ( [Nombre] => Bahia [Direccion] => [Distancia] => 4873543 [Descripcion] => hotel con vistas a la playa ) ) ) [Found] => 6 [Bounds] => stdClass Object ( [Limite norte] => 43.54000 [Limite sur] => 43.48677 [Limite este] => -5.69771 [Limite oeste] => -5.60898 ) )



Puedo ver que al decodificar el objeto, ya no tengo un array, sino algo que empieza por stdClass Object. Pero tampoco le doy mucha importacia a eso.

Despues vuelvo a codificarlo y lo envio al cliente. Si el cliente intenta hacer un json_decode sobre el objeto recibido ya no puede. Obtiene un NULL.

¿Se os ocurre donde puede estar el fallo?

Saludos a todos y muchas gracias por seguir ayudandome