Foros del Web » Programando para Internet » Javascript »

devolver objetos PHP por JSON

Estas en el tema de devolver objetos PHP por JSON en el foro de Javascript en Foros del Web. Hola, tengo un array de objetos en PHP y quiero devolverlos al JS para poder mostrarlos, hago lo siguiente pero como veréis no funciona :/ ...
  #1 (permalink)  
Antiguo 06/06/2013, 05:03
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 240
Antigüedad: 13 años, 5 meses
Puntos: 14
devolver objetos PHP por JSON

Hola, tengo un array de objetos en PHP y quiero devolverlos al JS para poder mostrarlos, hago lo siguiente pero como veréis no funciona :/



que hago mal?

gracias.
  #2 (permalink)  
Antiguo 06/06/2013, 05:37
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: devolver objetos PHP por JSON

json encode solo funciona con tipos primitivos. Si tienes clases, hazles un método que las convierta a una cadena JSON.

Código PHP:
Ver original
  1. class Cosa{
  2.     ...
  3.     public function toJSON() {
  4.         return json_encode(array(
  5.             'algo' => $this->algo,
  6.             'protected_algo' => $this->get_protected_algo(),
  7.             'private_algo' => $this->get_private_algo()                
  8.         ));
  9.     }
  10.     ...
  11. }
  12.  
  13.  
  14. ...
  15.  
  16. echo $cosa->toJSON();
  #3 (permalink)  
Antiguo 06/06/2013, 06:57
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 240
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: devolver objetos PHP por JSON

Hola, gracias por tu respuesta, en este ejemplo de codigo veo que cojo el valor de cada propiedad con los gets, no hay alguna forma de automatizar esto para que sirva con cualquier objeto dando igual las propiedades que tenga?

gracias nuevamente.
  #4 (permalink)  
Antiguo 06/06/2013, 07:03
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: devolver objetos PHP por JSON

Se puede hacer algo como ésto:

Código PHP:
Ver original
  1. public function toJSON(){
  2.         $var = get_object_vars($this);
  3.         foreach($var as &$valor){
  4.            if(is_object($valor) && method_exists($valor,'toJSON')){
  5.               $valor= $valor->toJSON();
  6.            }
  7.         }
  8.         return json_encode($var);
  9.      }
No la he probado, no sé si funcionará siempre bien.
Pero a mi me gusta más controlarlo a mano con la función de antes porque controlo directamente lo que voy a devovler (quizás no me interese devolver algunos atributos, o querría modificarlos antes de enviarlos para darle cierto formato, etc).
  #5 (permalink)  
Antiguo 06/06/2013, 07:37
 
Fecha de Ingreso: junio-2011
Ubicación: Barcelona
Mensajes: 240
Antigüedad: 13 años, 5 meses
Puntos: 14
Respuesta: devolver objetos PHP por JSON

gracias.

voy a probar.

saludos.

Etiquetas: devolver, funcion, js, json, objetos, php
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 05:13.