sábado, 27 de mayo de 2017

JSON
JSON (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Está basado en un subconjunto del Lenguaje de Programación JavaScript,
es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidos por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos.
JSON está constituído por dos estructuras:
  • Una colección de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un arreglo asociativo.
  • Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o sequencias.
Estas son estructuras universales; virtualmente todos los lenguajes de programación las soportan de una forma u otra. Es razonable que un formato de intercambio de datos que es independiente del lenguaje de programación se base en estas estructuras.
En JSON, se presentan de estas formas:
Un objeto es un conjunto desordenado de pares nombre/valor. Un objeto comienza con { (llave de apertura) y termine con } (llave de cierre). Cada nombre es seguido por : (dos puntos) y los pares nombre/valor están separados por , (coma).




Un arreglo es una colección de valores. Un arreglo comienza con [ (corchete izquierdo) y termina con ] (corchete derecho). Los valores se separan por , (coma).

Un valor puede ser una cadena de caracteres con comillas dobles, o un número, o true o false onull, o un objeto o un arreglo. Estas estructuras pueden anidarse.

Una cadena de caracteres es una colección de cero o más caracteres Unicode, encerrados entre comillas dobles, usando barras divisorias invertidas como escape. Un carácter está representado por una cadena de caracteres de un único carácter. Una cadena de carateres es parecida a una cadena de caracteres C o Java.


Un número es similar a un número C o Java, excepto que no se usan los formatos octales y hexadecimales.


Los espacios en blanco pueden insertarse entre cualquier par de símbolos.
Exceptuando pequeños detalles de encoding, esto describe completamente el lenguaje

1.      ¿Qué es y para qué sirve JSON?.
JSON (JavaScript Object Notation) es un formato para el intercambios de datos, básicamente JSON describe los datos con una sintaxis dedicada que se usa para identificar y gestionar los datos. JSON nació como una alternativa a XML, el fácil uso en javascript ha generado un gran numero de seguidores de esta alternativa. Una de las mayores ventajas que tiene el uso de JSON es que puede ser leído por cualquier lenguaje de programación. Por lo tanto, puede ser usado para el intercambio de información entre distintas tecnologías.
Veamos un sencillo ejemplo de JSON:
Imaginemos que tenemos una frutería  y que queremos obtener el nombre y la cantidad de fruta y verdura que tenemos. En un principio vamos a suponer que tenemos lo siguiente:
 - Fruta:
·         10 manzanas
·         20 Peras
·         30 Naranjas
 - Verduras
·         80 lechugas
·         15 tomates
·         50 pepinos
Para empezar, nos tenemos que familiarizar con la sintaxis de Json:
JSON Nombre/Par de Valores
Para asignar a un nombre un valor debemos usar los dos puntos ':' este separador es el equivalente al igual ('=') de cualquier lenguaje.
"Nombre" : "Geeky Theory"

Valores Json
Los tipos de valores que podemos encontrar en Json son los siguientes:
·         Un número (entero o float)
·         Un string (entre comillas simples)
·         Un booleano (true o false)
·         Un array (entre corchetes [] )
·         Un objeto (entre llaves {})
·         Null
Objetos JSON
Los objetos JSON se identifican entre llaves, un objeto puede ser en nuestro caso una fruta o una verdura.
{ "NombreFruta":"Manzana" , "Cantidad":20 }

Arrays JSON
En un Json puedes incluir arrays, para ellos el contenido del array debe ir entre corchetes []:
{
"Frutas": [
{ "NombreFruta":"Manzana" , "cantidad":10 },
{ "NombreFruta":"Pera" , "cantidad":20 },
{ "NombreFruta":"Naranja" , "cantidad":30 }
]
}
Una vez explicado el funcionamiento de la sintaxis JSON, vamos a aplicar nuestro ejemplo de la frutería.
{"Fruteria":
 [
  {"Fruta":
   [
    {"Nombre":"Manzana","Cantidad":10},
    {"Nombre":"Pera","Cantidad":20},
    {"Nombre":"Naranja","Cantidad":30}
   ]
  },
  {"Verdura":
   [
    {"Nombre":"Lechuga","Cantidad":80},
    {"Nombre":"Tomate","Cantidad":15},
    {"Nombre":"Pepino","Cantidad":50}
   ]
  }
 ]
}
Como podemos observar, hemos creado un objeto llamado frutería y, dentro de ese objeto hemos almacenado un array de dos elementos. El primer elemento del array contiene un objeto llamado frutay el segundo elemento del array contiene otro objeto llamado verdura. Estos objetos a su vez contienen un array cuyo contenido es el nombre y la cantidad de cada fruta o verdura.
Imaginemos que nos gustaría saber la cantidad de manzanas que tenemos. El path de este array sería el siguiente:
Path: json['Fruteria'][0]['Fruta'][0]['Cantidad']
Observamos que la cantidad de manzanas se almacena dentro del primer elemento del array que contiene el objeto Frutería, y a su vez dentro del primer elemento del array que contiene el objeto Fruta.
Todo esto parece un poco confuso, pero una vez que se domina veremos que tenemos ante nosotros una gran herramienta de desarrollo.
Existen herramientas online que ayudan a visualizar mejor un JSON. Una de las mejores herramientas que he visto es la página JSON Viewer. Si introducimos nuestro ejemplo observamos lo siguiente:
  
Y esto es todo. En lo siguientes tutoriales vamos a ver cómo generar un JSON a partir de una consulta en MySQL, esto nos proporcionará una herramienta útil a la hora de obtener datos de la base de datos.

Por último si tenéis alguna duda no dudéis en escribir un comentario yo intentaré contestar lo antes posible. Compartid el tutorial en vuestras redes sociales y animaos a realizar vuestros propios tutoriales en GeekyTheory.