Вы находитесь на странице: 1из 47

JSON

formatos ligeros de intercambio de datos en aplicaciones web

Rafa Occelli Lpez Asignatura IS39.


Presentacion JSON de Rafa Occelli Lpez 1

Guion

JSON:
Introduccin Estructuras Formas de representacin
Clases Propiedades Arrays

ENTORNO: YAML Librera JSON GSON Frameworks del lado del cliente Servicios web NoSQL

Configuracin e inicializacin Utilizacin


Eval prototipe
Presentacion JSON de Rafa Occelli Lpez 2

Parte teorica
Fuentes:
www.JSON.org http://www.adictosaltrabajo.com/tutoriales/tu toriales.php?pagina=prototypejsAjaxJSON

Presentacion JSON de Rafa Occelli Lpez

INTRODUCCION- EL PROBLEMA
Los desarrolladores necesitan enviar y recibir datos de manera sencilla pero utilizando un formato comn para estructuras complejas. Se han desarrollado muchas soluciones ad-hoc donde se separan un conjunto de valores separados por comas, puntos y otros separadores pero de sealizacion y desserializacion complicadas. Hay que evitar tener que construir parsers cada vez que queremos intercambiar mensajes con el servidor. Xml es opcion valida pero no la mas adecuada por ser demasiado pesada.
Presentacion JSON de Rafa Occelli Lpez 4

INTRODUCCION - solucin JSON

JSON(JavaScript Object Notation Subconjunto ECMASccript) Formato ligero de intercambio de datos independientes de cualquier lenguaje de programacin. Tiene forma de texto plano, de simple de lectura, escritura y generacin. Ocupa menos espacio que el formato XML No es necesario que se construya parsers personalizados.

Presentacion JSON de Rafa Occelli Lpez

INTRODUCCION - JSON
JSON
Independiente de un lenguaje especifico Basado en texto De formato ligero Fcil de parsear NO Define funciones NO tiene estructuras invisibles NO tiene espacios de nombres (Namespaces) NO tiene validator NO es extensible

Su tipo MIME es
Presentacion JSON de Rafa Occelli Lpez

application/json
6

INTRODUCCION - JSON
Lenguajes que lo soportan:
ActionScript c/c++ .NET(C#,VB.NET) Delphi Java JavaScript Perl PHP Python Ruby Etc

Presentacion JSON de Rafa Occelli Lpez

FORMAS DE REPRESENTACION

Sirve para representar objetos en el lado del cliente, normalmente en aplicaciones RIA (Rich Internet Application) que utilizan JavaScript.
Object.- Conjunto desaordenado de pares nombre/valor Array.- Coleccin ordenada de valores Value.- Puede ser un string, numero bool, objeto o array String.- Coleccin de cero o mas caracteres unicode Number.- Valor numerico sin comillas
8

Presentacion JSON de Rafa Occelli Lpez

FORMAS DE REPRESENTACION

Presentacion JSON de Rafa Occelli Lpez

FORMA DE OBJETO/CLASE
Es un conjunto de propiedades, cada una con su valor Notacin
Empieza con una llave de apertura { Termina con una llave de cierre } Sus propiedades
Se separan con comas El nombre y el valor estn separados por dos puntos :

Presentacion JSON de Rafa Occelli Lpez

10

FORMA DE OBJETO/CLASE

Presentacion JSON de Rafa Occelli Lpez

11

FORMA DE ARRAY

coleccion ordenada de valores u objetos Notacion


Empieza con un corchete izquierdo [ Termina con un corchete derecho ] Los valores se separan con una coma ,

Presentacion JSON de Rafa Occelli Lpez

12

FORMA DE ARRAY

Presentacion JSON de Rafa Occelli Lpez

13

FORMA DE VALUE

Puede ser
Una cadena de caracteres con comillas dobles Un numero True, false, null Un objeto Un array

Presentacion JSON de Rafa Occelli Lpez

14

FORMA DE STRING
coleccin de cero a mas caracteres Unicode encerrados entre comillas dobles Los caracteres de escape utilizan la barra invertida Es parecida a una cadena de caracteres en C o Java

Presentacion JSON de Rafa Occelli Lpez

15

FORMA DE NUMBER

Similar a los numeros de C o Java No usa formato octal o hexadecimal No puede ser NaN o Infinity, en su lugar se usa Null Puede representar
Integer Real scientific

Presentacion JSON de Rafa Occelli Lpez

16

CODIFICACION DE CARACTERES

Estrictamente UNICODE Por defecto es UFT-8 UFT-16 y UFT-32 tambin estn permitidos

Presentacion JSON de Rafa Occelli Lpez

17

FORMA DE VALUE

Presentacion JSON de Rafa Occelli Lpez

18

OTRAS FORMAS

BOOLEAN null

true/false

Presentacion JSON de Rafa Occelli Lpez

19

JSON vs XML (CLASE)

Presentacion JSON de Rafa Occelli Lpez

20

JSON vs XML (Similitudes)

Ambos son legibles por los humanos Tienen una sintaxis muy simple Son jerrquicos Son independientes del lenguaje de programacin Se pueden usar empleando Ajax

Presentacion JSON de Rafa Occelli Lpez

21

JSON vs XML (Diferencias)


Sintaxis dispar JSON
Es mas compacto Puede ser parseado usando el metodo eval() de JavaScript Puede incluir Arrays Los nombre de las propiedades no pueden ser palabras reservadas

XML

JavaScript es normalmente utilizado en el lado del cliente


Presentacion JSON de Rafa Occelli Lpez 22

Los nombres son mas extensos Puede ser validado bajo conjunto de reglas

JSON vs XML (ARRAYS)

Presentacion JSON de Rafa Occelli Lpez

23

YAML

ACRONIMO DE Yet Another Markup LanguageArray Es un subconjunto de JSON, con mas capacidades
Listas, casting, etc No maneja caracteres unicode de escape JSON puede ser parseado por los parsers de YAML

Hay que tenerlo en cuenta cuando JSON no sea suficiente para nuestras necesidades

Presentacion JSON de Rafa Occelli Lpez

24

JSON - UTILIZACION

Mediante Libreras (como por ejemplo en JavaScript) Transformacin de cadenas de texto a objetos Transformacin de objetos a cadenas de texto Personalizacin de las transformaciones

Presentacion JSON de Rafa Occelli Lpez

25

JSON ECMAScript 4ta EDICION


Define los siguientes metodos
toJSONString
Object, Array, Date, Boolean, Number, String

parseJSON
String

parseJSON
JSON.parse JSON.stringify

Estos estan disponibles en: www.json.org/json.js


Presentacion JSON de Rafa Occelli Lpez 26

JSON Ejemplo parseJSON

Presentacion JSON de Rafa Occelli Lpez

27

JSON Ejemplo JSON.parse

Presentacion JSON de Rafa Occelli Lpez

28

JSON Ejemplo - SUPPLANT

Presentacion JSON de Rafa Occelli Lpez

29

GSON
Librera para convertir objetos Java a JSON y viceversa
http://sites.google.com/site/gson/Home http://code.google.com/p/google-gson

Objetivos
Proporcionar mecanismos sencillos para convertir los objetos Dar capacidad de utilizar representaciones personalizadas de objetos.
Presentacion JSON de Rafa Occelli Lpez 30

GSON
Ejemplo:

Presentacion JSON de Rafa Occelli Lpez

31

GSON

Personalizacin de la serializacin y deserializacin.

GsonBuilder gson =new GsonBuilder(); gson.registerTypeAdapter(MyType.class, new MySerializer()); gson.registerDeserializer(MyType.class, new MyDeserializer());
gson.registerInstanceCreator(MyType.class, new MyInstanceCreator());

Presentacion JSON de Rafa Occelli Lpez

32

GSON

Personalizacin de la serializacion (cuando se llama al metodo toJson() ).

Presentacion JSON de Rafa Occelli Lpez

33

GSON

Personalizacion de la deserializacion (cuando se llama al metodo fromJson() ).

Presentacion JSON de Rafa Occelli Lpez

34

GSON

Personalizacion de la deserializacion de una instancia (se puede usar para clases que no tengan constructor sin argumentos)

Presentacion JSON de Rafa Occelli Lpez

35

Frameworks cliente

Actualmente exiten frameworks que utilizan de forma nativa JSON para presentar y tratar la informacion por parte del servidor.
YUI (Yahoo User Interface) Dojo jQuery Extjs Otros toolkits Ajax
36

Presentacion JSON de Rafa Occelli Lpez

YUI (Yahoo User Interface)


Da soporte nativo para JSON como fuennnte de datos para sus diversos componentes (pueden representar los datos visuales sin ningun proceso previo). API:YAHOO.lang.JSON
dateToString(obDate) isValid(strJson) Parse(strJson[,filter function(key,value)]) Stringify(objeto[,whiltelist[,depthlimit]) stringToDate(strJsonUTC)
37

Presentacion JSON de Rafa Occelli Lpez

JQUERY

Puede recuperar datos en formato JSON API


jQuery.parseJSON(json) jQuery.getJSON(url,[data],[callback(data,textStatus,xhr )])

Presentacion JSON de Rafa Occelli Lpez

38

EXTJS

Puede recuperar datos en formato JSON API


Ext.Ajax.request() Ext.decode(obServerResponse.responseText);

Presentacion JSON de Rafa Occelli Lpez

39

SERVICIOS WEB

Cualquier aplicacin puede consumir los servicios web de Yahoo y Google pudiendo recibir la respuesta en formato JSON

Presentacion JSON de Rafa Occelli Lpez

40

NoSQL

Este termino se refiere a bases de datos no relacionales que no dan garantas ACID, su caracterstica que mas llama la atencin es que no existen esquemas de tablas predefinidos. Algunas de las bases de datos que exponen sus datos mediante JSON/BSON son.
CouchDB MonogoDB RavenDB Riak
Presentacion JSON de Rafa Occelli Lpez 41

Keyspace Pincaster Sones

EJEMPO PRACTICO DE XML => JOSN


XML: <?xml version="1.0" encoding="UTF-8" ?> <poblaciones>
<poblacion id="0">Alcobendas</poblacion> <poblacion id="1">Miraflores de la Sierra</poblacion> <poblacion id="2">San Fernando de Henares</poblacion>

</poblaciones> Equivalente en JOSN: {"poblaciones":[ {"poblacion": { "@id": "0", "#text": "Alcobendas" }} , {"poblacion": { "@id": "1", "#text": "Miraflores de la Sierra" }} , {"poblacion": { "@id": "2", "#text": "San Fernando de Henares" }} ]}
Presentacion JSON de Rafa Occelli Lpez 42

EJEMPO PRACTICO DE XML => JOSN


<script language="javascript" type="text/javascript"> var json = eval ( {"poblaciones":[ {"poblacion": { "@id": "0", "#text": "Alcobendas " }},{"poblacion": { "@id": "1", "#text": "Miraflores de la Sierra" }}]} ); alert(json.poblaciones[0].poblacion["#text"]); </script>

1Paso: analizar el contenido del objeto JSON tenemos que evaluar primero la cadena usando el procedimiento eval('') de javascript 2Paso: acceder al nodo (nomenclatura recomendada): alert(json.poblaciones[0].poblacion["#text"]);
Presentacion JSON de Rafa Occelli Lpez 43

EJEMPO PRACTICO DE XML => JOSN

Formato del documento JSON es libre y nosotros podemos construir nuestras propias estructuras. Haciendo caso omiso de las recomendaciones: Ejemplo:

{"poblacion":[ { "id": "0", "nombre": "Alcobendas" } , { "id": "1", "nombre": "Miraflores de la Sierra" } , { "id": "2", "nombre": "San Fernando de Henares" } ]}
Presentacion JSON de Rafa Occelli Lpez 44

EJEMPO PRACTICO DE XML => JOSN


<script language="javascript" type="text/javascript"> var json = eval ( {"poblacion":[ { "id": "0", "nombre": "Alcobendas" },{ "id ": "1", "nombre": "Miraflores de la Sierra" }]} ); if(json.poblacion.length > 0 ) { for (i=0; i < json.poblacion.length; i++) { alert(json.poblacion[i].nombre); } } </script>
Presentacion JSON de Rafa Occelli Lpez 45

CONCLUSIONES

Formato de intercambio de datos, potente, flexible y sobre todo ligero para intercambiar datos va HTTP Independiente de cualquier lenguaje de programacin Es soportado por los principales lenguajes del lado del servidor Ideal para construir aplicaciones RIA con frameworks JavaScript Existen diferentes bases de datos NoSQL que guardan sus datos en formato JSON plan o binario (BSON)
Presentacion JSON de Rafa Occelli Lpez 46

FIN

Presentacion JSON de Rafa Occelli Lpez

47

Вам также может понравиться