miércoles, 22 de octubre de 2014

JSON

JSON significa JavaScript Object Notation o Notación de Objetos de JavaScript. Fue nombrado de
esta forma porque JavaScript fue el primer lenguaje en sacar provecho de este formato.

JSON Syntax

{"nombre":"Lushui","especie":"Panda","dieta":"Cosas verdes","edad":7,"colores":["\
red","marron","blanco"]}

Las cadenas JSON deben estar contenidas entre comillas dobles

JSON permite estos tipos de valores:


  • Doble
  • Flotante
  • Cadena
  • Booleano
  • Matriz
  • Objeto
  • Null

Los valores numéricos se representan sin comillas dobles. Ten cuidado al escoger si entrecomillas
un valor o no. Por ejemplo, los códigos postales de Estados Unidos consisten en cinco números. No
obstante, si omitieras las comillas de un código postal, 07702 sería tomado como un entero y sería
truncado a 7702 . Este es un error que se ha cobrado la vida de muchos aventureros de la web.
Los booleanos son representados por las palabras true y false , ambos sin comillas al igual que
en PHP. Como dije antes, los valores de cadenas quedan dentro de comillas dobles y no comillas
simples.
El valor null funciona de forma similar a la que lo hace en PHP, y es representado por la palabra
null sin comillas. ¡Debería ser fácil de recordar!
Hemos visto objetos. Al igual que el objeto JSON principal en sí, están envueltos por llaves y pueden
contener toda variedad de tipos de valores.
Las matrices, lucen de manera muy similar a su contrapartida en JavaScript

// JavaScript
['rojo', 'marron', 'blanco']
["rojo", "marron", "blanco"]

JSON y PHP
Como mencioné antes, desde la versión 5.2.0, PHP ofrece soporte para serializar y deserializar datos
de y hacia el formato JSON. Vamos a ver cómo funciona eso en acción.
Serializando una matriz PHP a JSON
Para serializar un valor PHP solo necesitamos el método json_encode() . Tal que así:
1
<?php
2
3
4
$verdad = array('panda' => '¡Increible!');
echo json_encode($verdad);
El resultado de este fragmento de código será una cadena JSON que contenga el siguiente valor.

{"panda":"¡Increible!"}
¡Bien! Vamos a asegurarnos de que podemos convertir esto de vuelta al formato que pueda ser
entendido por PHP.
Deserializando una matriz PHP desde una cadena JSON
Para ello usaremos el método json_decode . Apuesto a que no lo viste venir.


<?php
2
3
4
$verdad = json_decode('{"panda":"¡Increible!"}');
echo $verdad['panda'];

¡Genial! Allá vam... espera, ¿qué?
1
Fatal error: Cannot use object of type stdClass as array in ...

Como ves, json_decode no devuelve nuestro JSON como matriz PHP; usa un objeto del tipo
stdClass para representar nuestros datos. En vez de ello vamos a acceder a la clave del objeto como
un atributo:
1
<?php

$verdad = json_decode('{"panda":"¡Increible!"}');
echo $verdad->panda;

// ¡Increible!

¡Genial! Eso es lo que queríamos. Si queríamos una matriz, PHP nos ofrece algunas formas de
convertir este objeto en una, pero por suerte, json_decode aun tiene un truco bajo la manga.
Si usas true como segundo parámetro a la función, recibiremos la matriz PHP como esperábamos.
¡Gracias json_decode !
1
<?php

$verdad = json_decode('{"panda":"¡Increible!”}', true);
echo $verdad['panda'];

// ¡Increible!

No hay comentarios:

Publicar un comentario