elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  PHP: pasar de Object a JSON
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: PHP: pasar de Object a JSON  (Leído 2,393 veces)
JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
PHP: pasar de Object a JSON
« en: 3 Abril 2017, 13:26 pm »

Muy buenas,

Tengo una clase Mapa que es más o menos de este estilo:

Código
  1. <?php
  2. /**
  3. * Esta clase es un Tranfer Object, que son utilizados para transportar datos
  4. * desde la base de datos hasta las capas superiores.
  5. */
  6. class Mapa{
  7. private $id_mapa;
  8. private $nombre;
  9. private $complejo;
  10. private $usuario;
  11. private $creado;
  12. private $actualizado;
  13. private $descripcion;
  14.  
  15. /** id_mapa */
  16. public function getId_mapa(){
  17. return $this->id_mapa;
  18. }
  19.  
  20. public function setId_mapa($id_mapa){
  21. $this->id_mapa = $id_mapa;
  22. }
  23.  
  24.                // Etc...
  25. }
  26. ?>

Por otro lado, tengo una función que hace un SELECT en la base de datos, coge todos los Mapas almacenados y crea un array de Mapas, es decir, un array que almacena objetos de tipo Mapa.

Código
  1. /**
  2. * Selecciona todos los mapas de la base de datos
  3. * {@inheritDoc}
  4. * @see IMapa::selectMapas()
  5. */
  6. public function selectMapas(){
  7. $data_source = new DataSource();
  8. $data_table = $data_source->ejecutarConsulta("SELECT * FROM mapas");
  9. $mapa = null;
  10. $mapas = array();
  11. foreach ($data_table as $clave => $valor) {
  12. $mapa = new Mapa();
  13. $mapa->setId_mapa($data_table[$clave]["id_mapa"]);
  14. $mapa->setNombre($data_table[$clave]["nombre"]);
  15. $mapa->setComplejo($data_table[$clave]["complejo"]);
  16. $mapa->setUsuario($data_table[$clave]["usuario"]);
  17. $mapa->setCreado($data_table[$clave]["creado"]);
  18. $mapa->setActualizado($data_table[$clave]["actualizado"]);
  19. $mapa->setDescripcion($data_table[$clave]["descripcion"]);
  20. array_push($mapas, $mapa);
  21. }
  22. return $mapas;
  23. }

Una vez hecha la SELECT, quiero pasar el resultado a un JSON. Y lo que tengo es esto:

Código
  1. require 'MapaDAO.php';
  2.  
  3. // Creamos una instancia del DAO para Mapa
  4. $dao = new MapaDAO();
  5.  
  6. /**
  7. * Traer todos lo registros de la tabla Mapas.
  8. */
  9. $resultado = $dao->selectMapas();
  10.  
  11. // Cogemos el primer objeto (la primera fila de la base de datos) y la pasamos a JSON
  12. $json = json_encode($resultado[0]);
  13. echo $json;

Concretamente estoy accediendo a la primera posición del array (al primer objeto de tipo Mapa) y lo estoy intentando pasar a un JSON. Después, en la petición AJAX estoy imprimiento ese JSON, pero me aparece vacío  :huh:

Lo gracioso es que si hago esto:

Código
  1. $json = json_encode($resultado[0]->getId_mapa());

Sí que me muestra el id del mapa en formato JSON. Pero ya os digo, no me funciona cuando le digo que me pase todo el objeto a un JSON. ¿Alguien sabe qué puede estar pasando?

Un saludo  ;D


Posdata: Estoy vfendo en la documentación de PHP lo siguiente: "Si un object se convierte en un object, éste no se modifica. Si un valor de cualquier otro tipo se convierte en un object, se crea una nueva instancia de la clase stdClass incorporada."

¿Es posible que tenga que convertir mi objeto Mapa en un objeto stdClass?


« Última modificación: 3 Abril 2017, 13:33 pm por JonaLamper » En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
JonaLamper


Desconectado Desconectado

Mensajes: 394



Ver Perfil
Re: PHP: pasar de Object a JSON
« Respuesta #1 en: 3 Abril 2017, 15:41 pm »

Al final no he tenido más remedio que crear un objeto stdClass y copiar todos los atributos de mi objeto Mapa.

Por otro lado, quería que el resultado enviado al cliente fuese un JSON. He puesto esto:

Código
  1. header('Content-type: application/json');
  2. echo json_encode($array);
  3.  

Y el resultado en el navegador es este:



¿Alguien me puede confirmar si ese resultado es un JSON?

Gracias  ;D


En línea

Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: PHP: pasar de Object a JSON
« Respuesta #2 en: 3 Abril 2017, 18:14 pm »

si te hizo el encode sin problemas, es un json (el lo valida)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines