Temas > Programacion > Java script - Java > Consumir un JSON desde PHP
Julio

Consumir un JSON desde PHP
PHP puede interpretar datos provenientes de una cadena 
con notación JSON, de modo que se puedan
guardar en variables y luego utilizarlas en los scripts del lado 
del servidor. En este articulo veremos cómo
hacerlo y además destacaremos una serie de consejos para que 
los JSON estén bien formados y consigamos una correcta 
interpretación.
Recordemos que existen diversas librerías para que podamos 
trabajar con cadenas en notación JSON.
Nosotros estamos utilizando las funciones nativas de PHP 
para JSON, que están disponibles por defecto desde PHP 5.2.
Primero vamos a mostrar un objeto definido con JSON mediante 
Javascript, para hacer unas comprobaciones y saber si está bien 
construido.
<?php //esto no va
<script>
var objJson = {
    elemento1: "valor1",
    elemento2: 22,
    elemento3: null,
    masCosas: {
         voy: "ya",
         vengo: "despues"
    }
}
alert(objJson.elemento1)
alert(objJson.masCosas.vengo)
</script>
?>//esto no va
Este script Javascript, ejecutado en un navegador, nos 
mostraría dos mensajes de alerta con valores que se han 
colocado en el objeto definido con notación JSON. Esto no 
tiene nada que ver con lo que vamos a ver sobre PHP, pero al 
menos tenemos claro que nuestro JSON es correcto.
Ahora vamos a crear una variable PHP con la cadena para hacer 
este objeto y lo cargaremos en una variable PHP interpretando 
el JSON. Para ello PHP dispone de una función llamada
 json_decode() que recibe la cadena con notación JSON y devuelve 
un objeto, o cualquier otro tipo de variable, que estuviera
representada en el JSON.
<?php
$str_obj_json = `{
    "elemento1": "valor1",
    "elemento2": 22,
    "elemento3": null,
    "masCosas": {
        "voy": "ahora",
        "vengo": "ya"
    }
}`;
$obj_php = json_decode($str_obj_json);
?>
Ahora podríamos mostrar el contenido de esa variable con 
la función de PHP print_r(), que muestra el contenido de 
variables de manera que se pueda entender por un humano.
<?php //esto no va
stdClass Object
(
    [elemento1] => valor1
    [elemento2] => 22
    [elemento3] =>
    [masCosas] => stdClass Object
    (
        [voy] => ahora
        [vengo] => ya
    )
)
?>//esto no va
Por último podemos intentar acceder a una de las propiedades 
de este objeto, de esta manera:
echo "Una propiedad cualquiera:" . $obj_php->elemento1;
Consejos para hacer un JSON que se pueda interpretar 
correctamente La función json_decode() de PHP requiere 
unas normas un poco más estrictas a la hora de construir un
JSON. Si no atendemos esas reglas no obtendremos un mensaje 
de error, sino que la función devolverá un valor nulo: null. Por tanto,
 algo que Javascript puede interpretar correctamente puede que no 
sea así por PHP, así que hay que prestar especial atención sobre una 
serie de puntos.
1) En la cadena JSON, tanto el nombre de una propiedad como el 
valor deben estar entre comillas, menos los valores numéricos, 
o palabras como null, que pueden estar sin comillas. 
Incorrecto:
$json = json_decode(`{nombre: "cualquier valor"}`);
Correcto:
$json = json_decode(`{"nombre": "cualquier valor"}`);
2) Se tienen que utilizar comillas dobles. No se permiten comillas 
simples para los nombres de variables y sus valores.
Incorrecto:
$json = json_decode("{`frutas`: [`pera`, `uva`]}");
Correcto:
$json = json_decode(`{"frutas": ["pera", "uva"]}`);
3) No podemos dejarnos una coma que después no tenga nada, 
así como un corchete o llave de más o de menos.
Incorrecto:
$json = json_decode(`{"nombre": "valor", }`);
Correcto:
$json = json_decode(`{"nombre": "valor"}`);
4) Tenemos que enviar los datos a json_decode() en UTF-8. Si 
estamos trabajando en iso-8859-1, habría que codificar la cadena 
en UTF-8 previamente:
Incorrecto:
$json = json_decode(`{"mañana": "miércoles"}`);
Correcto:
$json = json_decode(utf8_encode(`{"mañana": "miércoles"}`));













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal