Foros del Web » Programando para Internet » PHP »

[Problema] Api Rest Slim y JSON

Estas en el tema de [Problema] Api Rest Slim y JSON en el foro de PHP en Foros del Web. Hola, antes de nada muchas gracias a todos y a este foro que me ha ayudado mucho. Tengo el siguiente problema: Estoy haciendo un pequeño ...
  #1 (permalink)  
Antiguo 17/07/2015, 12:26
 
Fecha de Ingreso: julio-2015
Mensajes: 1
Antigüedad: 8 años, 9 meses
Puntos: 0
[Problema] Api Rest Slim y JSON

Hola, antes de nada muchas gracias a todos y a este foro que me ha ayudado mucho.
Tengo el siguiente problema:

Estoy haciendo un pequeño proyecto con la API REST Slim, hasta aquí todo bien. El problema viene cuando muestro los datos de la base de datos recogidos mediante esta API, mediante la función json_encode(), la cual me los muestra así:

En vez de mostrarme "Geografía", me muestra "Geograf\u00eda".


La codificación está en utf-8 tanto en la base de datos, como en el header() de php.
He probado con la función array_map('htmlentities', $array), también con utf8_encode, etc y solo consigo empeorarlo.

Os pongo el código de la conexión con la base de datos mediante PDO:
Código:
  
require 'vendor/autoload.php';

$app = new \Slim\Slim();

$app ->config(array(
    
    'debug' => true,
    'templates.path' => 'views'
));

$app->contentType('text/html; charset=utf-8'); 

$db = new PDO('mysql:host=localhost;dbname=pruebas;charset=utf8','user1','1234');

$db->exec("set names utf8");
y el código a la hora de obtener los datos:

Código:
$app->get($rutaApi . '/prueba', function() use ($app, $db){
    

    
    $query = $db -> prepare("SELECT *  FROM table_pruebas");
    $query->execute();
    
    

    $count = $query->rowCount();
    
    
    $data['usuarios'] = $query->fetchAll(PDO::FETCH_ASSOC);

    $data['count'] = $count;

    $app->render('pruebas.php', $data);

    
});
y por último el código de la página pruebas.php:

Código:
<?php


  $jsondata = array();

    if($count > 0){
    
      $jsondata["Success"] = true;
 

    }else{
      
        $jsondata["Success"] = false;
 

    }

    $jsondata["Result"]["ItemCount"] = $count;


    foreach ($usuarios as $key => $value) {
      
       $jsondata["Result"]["Items"][] = $value;
     }
 
 
 
  header('Content-type: application/json; charset=utf-8');


     $json = json_encode($jsondata, JSON_PRETTY_PRINT);
     echo $json;
     


exit();

?>
A ver si alguien puede echarme una mano.

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 17/07/2015, 13:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: [Problema] Api Rest Slim y JSON

Lo que sucede es que no tienes ni idea de cómo se expresa JSON con respecto a caracteres unicode, acentos, etc.

Mira:
Código PHP:
Ver original
  1. echo json_encode('Geografía');
  2. // "Geograf\u00eda"

Y desde luego, si aplicas json_decode() o JSON.parse() desde Javascript:

Código Javascript:
Ver original
  1. console.log(JSON.parse('"Geograf\u00eda"'))
  2. // Geografía

Eso es correcto, y así es como debe funcionar.

Ahí no hay error alguno.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: api, json
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 07:52.