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


 


Tema destacado: Análisis del vídeo del hackeo al Sindicato de los Mossos de Esquadra


+  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 335 veces)
JonaLamper


Desconectado Desconectado

Mensajes: 349



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

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 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: 349



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

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
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.012



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

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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
json
Desarrollo Web
samrofi 0 505 Último mensaje 8 Agosto 2012, 16:31
por samrofi
Necesito ayuda sobre. OBJECT& operator= (const OBJECT& right)
Programación C/C++
anonimo12121 6 1,264 Último mensaje 25 Agosto 2012, 18:52
por anonimo12121
Object reference not set to an instance of an object.
.NET
jaxoR 1 449 Último mensaje 17 Mayo 2015, 00:25
por kub0x
problema al pasar indexes de json a la vista con foreach
Desarrollo Web
geshiro 6 724 Último mensaje 22 Agosto 2016, 02:59
por WHK
se puede pasar contenido de txt a .json?
Desarrollo Web
.rn3w. 1 503 Último mensaje 17 Octubre 2016, 05:43
por engel lex
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines