SlideShare uma empresa Scribd logo
1 de 52
Manual de JSON
Formatos ligeros de intercambio de datos en
aplicaciones web
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
Licensed under Creative Commons Attribution 3
Guión
1. Introducción
2. Estructuras
3. Formas de representación
A. Clases
B. Propiedades
C. Arrays
4. Configuración e Inicialización
5. Utilización
A. eval
B. Prototipe
 YAML
 Librería JSON
 GSON
 Frameworks del lado cliente
 Servicios web
 NoSQL
JSON Entorno
Parte teórica
www.JSON.org
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
INTRODUCCIÓN – EL
PROBLEMA
 Los desarrolladores necesitan enviar y recibir datos de manera
sencilla pero utilizando un formato común para estructuras
complejas.
 Se han desarrollado muchas soluciones ad-hoc donde se
separan un conjunto de valores separados por comas, puntos y
comas u otros separadores pero de serialización y des-
serialización complicadas.
 Hay que evitar tener que construir parsers cada vez que
queremos intercambiar mensajes con el servidor.
 XML es opción válida pero no la más adecuada por ser
demasiada pesada.
INTRODUCCIÓN – UNA
SOLUCIÓN
JSON (JavaScript Object Notation - Subconjunto ECMAScript)
 Formato ligero de intercambio de datos independiente de
cualquier lenguaje de programación
 Tiene forma de texto plano, de simple de lectura, escritura y
generación
 Ocupa menos espacio que el formato XML
 No es necesario que se construyan parsers personalizados
INTRODUCCIÓN – JSON
 JSON :
 Independiente de un lenguaje específico
 Basado en texto
 De Formato ligero
 Fácil 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 -> application/json
INTRODUCCIÓN – JSON
 Lenguajes que lo soportan:
 ActionScript
 C / C++
 .NET (C#, VB.NET…)
 Delphi
 Java
 JavaScript
 Perl
 PHP
 Python
 Ruby
 Etc…
FORMAS DE
REPRESENTACION
 Sirve para representar objetos en el lado de cliente, normalmente
en aplicaciones RIA (Rich Internet Application) que utilizan
JavaScript.
 Object.- Conjunto desordenado de pares nombre/valor
 Array.- Colección ordenada de valores
 Value.- Puede ser un string, número, booleano, objeto u array
 String.- Colección de cero o más caracteres unicode.
 Number.- Valor numérico sin comillas
FORMAS DE
REPRESENTACION
Descripción simplificada Ejemplo
FORMA DE OBJECT /
CLASE
 Es un conjunto de propiedades , cada una con su valor
 Notación
 Empieza con una llave de apertura {
 Terminan con una llave de cierre }
 Sus propiedades
 Se separan con comas
 El nombre y el valor estan separados por dos puntos :
FORMA DE OBJECT /
CLASE
[
{
“country”: “New Zealand”,
“population”: 3993817,
“animals”: [“sheep”, “kiwi”]
},
{
“country”: “Singapore”,
“population”: 4353893,
“animals”: [“merlion”, “tiger”]
}
]
FORMA DE ARRAY
 Colección ordenada de valores u objetos
 Notación
 Empieza con un corchete izquierdo [
 Termina con un corchete derecho ]
 Los valores se separan con una coma ,
FORMA DE ARRAY
[
{
“country”: “New Zealand”,
“population”: 3993817,
“animals”: [“sheep”, “kiwi”]
} ,
{
“country”: “Singapore”,
“population”: 4353893,
“animals”: [“merlion”, “tiger”]
}
]
FORMA DE VALUE
 Puede ser
 Una cadena de caracteres con comillas dobles
 Un número
 True, false, null
 Un objeto
 Un array
FORMA DE STRING
 Colección 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.
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
CODIFICACIÓN DE
CARACTERES
 Estrictamente UNICODE
 Por defecto es UTF-8
 UTF-16 y UTF-32 también estan permitidos.
FORMA DE VALUE
[
{
“country”: “New Zealand”,
“population”: 3993817,
“animals”: [“sheep”, “kiwi”]
} ,
{
“country”: “Singapore”,
“population”: 4353893,
“animals”: [“merlion”, “tiger”]
}
]
String
Number
Array
Objeto
OTRAS FORMAS
 Boolean -> true / false
 null
JSON vs XML ( CLASE )
...
<persona>
<nombre>Juan</nombre>
<apellidos>Palomo</apellidos>
<fecha>10/10/1980</fecha>
</persona>
...
var myJSONObject =
{
"nombre": "Juan",
"apellidos": "Palomo",
"fecha": "10/10/1980"
};
XML JSON
JSON vs XML (
SIMILITUDES )
 Ambos son legibles por los humanos
 Tienen una sintaxis muy simple
 Son jerárquicos
 Son independientes del lenguaje de programación
 Se pueden usar empleando Ajax
JSON vs XML (
DIFERENCIAS )
 Sintáxis dispar
 JSON
 Es más compacto
 Puede ser parseado usando el método eval() de JavaScript
 Puede incluir Arrays
 Los nombres de las propiedades no pueden ser palabras
reservadas de JavaScript
 XML
 Los nombres son mas extensos
 Puede ser validado bajo un conjunto de reglas
 JavaScript es normalmente utilizado en el lado cliente.
JSON vs XML ( ARRAYS )
...
<listado>
<persona>
<nombre>Juan</nombre>
<apellidos>Palomo</apellidos>
<fecha>10/10/1980</fecha>
</persona>
<persona>
<nombre>Juan</nombre>
<apellidos>Palomo</apellidos>
<fecha>10/10/1980</fecha>
</persona>
</listado>
...
...
var myJSONObject = {"listado": [
{
"nombre": "Juan",
"apellidos": "Palomo",
"fecha": "10/10/1980"
},
{
"nombre": "Juan",
"apellidos": "Palomo",
"fecha": "10/10/1980"
}
]
};
...
XML JSON
YAML
 Acrónimo de Yet Another Markup LanguageArray
 Es un subconjunto de JSON, con más 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.
JSON - UTILIZACIÓN
 Mediante Librerias ( Por ejemplo en JavaScript )
 Transformación de cadenas de texto a objetos
 Transformación de objetos a cadenas de texto
 Personalización de las transformaciones
JSON – ECMAScript 4ta
EDICIÓN
 Define los siguientes métodos
 toJSONString
 Object, Array, Date, Boolean, Number, String
 parseJSON
 String
 JSON.parse
 JSON.stringify
 Estos están disponibles en : www.json.org/json.js
JSON – Ejemplo parseJSON
<script src=“json.js“ />
<script>
var myData = '{"fecha":"mivalorfecha","numero":85}'.parseJSON();
alert( myData.fecha);
alert( myData.numero);
</script>
JSON – Ejemplo parseJSON
<script src=“json.js“ />
<script>
myData = JSON.parse(text, function (key, value) {
var type;
if (value && typeof value === 'object') {
type = value.type;
if (typeof type === 'string' && typeof window[type] === 'function') {
return new (window[type])(value);
}
}
return value;
}
);
</script>
JSON – Ejemplo JSON.parse
<script src=“json.js“ />
<script>
var myData = JSON.parse(‘{"fecha":"mivalorfecha","numero":85}’,
function (key, value) {
return value;
}
);
alert( myData.fecha);
alert( myData.numero);
</script>
JSON – EJEMPLO - SUPPLANT
var template = '<table border="{border}">' +
'<tr><th>Last</th><td>{last}</td></tr>' +
'<tr><th>First</th><td>{first}</td></tr>' +
'</table>';
var data = {
"first": "Carl",
"last": "Hollywood",
"border": 2
};
mydiv.innerHTML = template.supplant(data);
JSON – EJEMPLO - SUPPLANT
String.prototype.supplant = function (o) {
return this.replace(/{([^{}]*)}/g,
function (a, b) {
var r = o[b];
return typeof r === 'string' ? r : a;
}
);
};
GSON
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
GSON
 Librería para convertir objetos Java a JSON y vice-versa.
 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.
GSON
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
}
Clase personalizada
 Ejemplo
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
==> {"value1":1,"value2":"abc"}
Serialización
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
==> obj2 is just like obj
Deserialización
GSON
 Personalización de la serialización y deserialización.
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(MyType.class, new MySerializer());
gson.registerDeserializer(MyType.class, new MyDeserializer());
gson.registerInstanceCreator(MyType.class, new MyInstanceCreator());
GSON
 Personalización de la serialización (cuando se llama al método
toJson() ).
private class DateTimeSerializer implements JsonSerializer<DateTime>
{
public JsonElement serialize(DateTime src, Type typeOfSrc,
JsonSerializationContext context){
new JsonPrimitive(src.toString());
}
}
GSON
 Personalización de la deserialización (cuando se llama al
método fromJson() ).
private class DateTimeDeserializer implements JsonDeserializer<DateTime>
{
public DateTime deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context)
throws JsonParseException {
return new DateTime(json.getAsJsonPrimitive().getAsString());
}
}
GSON
 Personalización de la deserialización de una instancia ( se
puede usar para clases que no tengan constructor sin
argumentos)
private class MoneyInstanceCreator implements InstanceCreator<Money> {
public Money createInstance(Type type) {
return new Money("1000000", CurrencyCode.USD);
}
}
Frameworks cliente
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
FRAMEWORKS CLIENTE
 Actualmente existen frameworks que utilizan de forma nativa
JSON para presentar y tratar la información proviniente del
servidor.
 YUI (Yahoo User Interface)
 Dojo
 jQuery
 Extjs
 Otros toolkits Ajax.
YUI (Yahoo User Interface)
 Da soporte nativo para JSON como fuente de datos para sus
diversos componentes (pueden representar los datos
visualmente sin ningún proceso previo).
 API: YAHOO.lang.JSON
 dateToString( objDate )
 isValid ( strJson )
 parse ( strJson [, filter function(key, value) ] )
 stringify ( objeto [, whitelist [, depthLimit] ] )
 stringToDate ( strJsonUTC )
JQUERY
 Puede recuperar datos en formato JSON
 API
 jQuery.parseJSON( json )
 jQuery.getJSON( url, [ data ], [ callback(data, textStatus, xhr) ] )
EXTJS
 Puede recuperar datos en formato JSON
 API
 Ext.Ajax.request ( … )
 Ext.decode (objServerResponse.responseText);
Servicios Web
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
SERVICIOS WEB
 Cualquier aplicación puede consumir los servicios web de
Yahoo y Google pudiendo recibir la respuesta en formato JSON.
<script>
function listEvents(root) { …. }
function ws_results(obj) { ….. }
</script>
<script src="http://www.google.com/calendar/feeds/developer-
calendar@google.com/public/full?alt=json-in-script&callback=listEvents">
</script>
<script src="http://search.yahooapis.com/ImageSearchService/V1/
imageSearch?appid=YahooDemo&query=Madonna&output=json&callback=w
s_results"></script>
NoSQL
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
NoSQL
 Este término se refiere a bases de datos “no relacionales” que
no dan garantías ACID, su característica que más llama la
atención es que no existen esquemas de tablas predefinidos.
 Algunas de las bases de datos que exponen sus datos mediante
JSON/BSON son:
 CouchDB
 MongoDB
 RavenDB
 Riak
 Keyspace
 Pincaster
 Sones
Visor
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
VISOR DE OBJETOS JSON
 Hace algún tiempo construí una herramienta visual (visor de objetos)
construida con JavaScript, para ver la representación gráfica de las
estructuras definidas en formato JSON.
 http://emmerson-miranda.appspot.com/Proyectos/json/MostrarElementos/MostrarElementos.html
Conclusiones
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/
CONCLUSIONES
 Formato de intercambio de datos, potente, flexible y sobre todo ligero para
intercambiar datos vía HTTP.
 Independiente de cualquier lenguaje de programación.
 Es soportado por los principales lenguajes del lado servidor
 Java, .Net, PHP (pueden serializar y deserializar objetos en formato JSON)
 Ideal para construir aplicaciones RIA con frameworks JavaScript
 Ej.: YUI
 Existen diferentes bases de datos NoSQL que guardan sus datos en formato
JSON plano o binario (BSON)
- FIN -
Licensed under Creative Commons Attribution 3
Emmerson Miranda
SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5
Blog : http://emmersonmiranda.blogspot.com/

Mais conteúdo relacionado

Mais procurados

Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WS
Katrien Verbert
 

Mais procurados (20)

ES6 presentation
ES6 presentationES6 presentation
ES6 presentation
 
Ejercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registrosEjercicios resueltos en el Laboratorio de estructuras struct registros
Ejercicios resueltos en el Laboratorio de estructuras struct registros
 
Lab #2: Introduction to Javascript
Lab #2: Introduction to JavascriptLab #2: Introduction to Javascript
Lab #2: Introduction to Javascript
 
javaScript.ppt
javaScript.pptjavaScript.ppt
javaScript.ppt
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
 
Asynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & PromisesAsynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & Promises
 
Asynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingAsynchronous JavaScript Programming
Asynchronous JavaScript Programming
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Introduction to web programming with JavaScript
Introduction to web programming with JavaScriptIntroduction to web programming with JavaScript
Introduction to web programming with JavaScript
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Php introduction
Php introductionPhp introduction
Php introduction
 
jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events jQuery -Chapter 2 - Selectors and Events
jQuery -Chapter 2 - Selectors and Events
 
Using Java to implement SOAP Web Services: JAX-WS
Using Java to implement SOAP Web Services: JAX-WS�Using Java to implement SOAP Web Services: JAX-WS�
Using Java to implement SOAP Web Services: JAX-WS
 
Master page in Asp.net
Master page in Asp.netMaster page in Asp.net
Master page in Asp.net
 
Getting started with typescript
Getting started with typescriptGetting started with typescript
Getting started with typescript
 
Basics of JavaScript
Basics of JavaScriptBasics of JavaScript
Basics of JavaScript
 
Node.js Express Framework
Node.js Express FrameworkNode.js Express Framework
Node.js Express Framework
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
Javascript
JavascriptJavascript
Javascript
 
JavaScript Tutorial For Beginners | JavaScript Training | JavaScript Programm...
JavaScript Tutorial For Beginners | JavaScript Training | JavaScript Programm...JavaScript Tutorial For Beginners | JavaScript Training | JavaScript Programm...
JavaScript Tutorial For Beginners | JavaScript Training | JavaScript Programm...
 

Semelhante a Json short manual

Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
Robert Wolf
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
galletasdecoco84
 

Semelhante a Json short manual (20)

Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
 
Ajax
AjaxAjax
Ajax
 
Apuntes de XSD
Apuntes de XSDApuntes de XSD
Apuntes de XSD
 
Semana 7 Proyecto Misión TIC 2022 JSON
Semana 7   Proyecto Misión TIC 2022 JSONSemana 7   Proyecto Misión TIC 2022 JSON
Semana 7 Proyecto Misión TIC 2022 JSON
 
16 Alternativas XML
16 Alternativas XML16 Alternativas XML
16 Alternativas XML
 
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptxConceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
Conceptos-HTML-y-JavaScript-Bloque-3-JavaScript.pptx
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básico
 
Javascript continuación
Javascript   continuaciónJavascript   continuación
Javascript continuación
 
Informe Final Del Proyecto Poo
Informe Final Del Proyecto PooInforme Final Del Proyecto Poo
Informe Final Del Proyecto Poo
 
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
Mejorando.la: Curso Profesional de Frontend, Dominando JavaScript
 
Semana 4 Javascript funciones y Metodos
Semana 4   Javascript funciones y MetodosSemana 4   Javascript funciones y Metodos
Semana 4 Javascript funciones y Metodos
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícil
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
Json
JsonJson
Json
 
Script
ScriptScript
Script
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
P2C2 Introducción a JEE5
P2C2 Introducción a JEE5P2C2 Introducción a JEE5
P2C2 Introducción a JEE5
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
 
Clase 5 funciones en javaScript
Clase 5 funciones en javaScriptClase 5 funciones en javaScript
Clase 5 funciones en javaScript
 
Nu soap
Nu soapNu soap
Nu soap
 

Mais de Emmerson Miranda

Mais de Emmerson Miranda (14)

WSO2 API Manager - Accessing SOAP Service
WSO2 API Manager -  Accessing SOAP ServiceWSO2 API Manager -  Accessing SOAP Service
WSO2 API Manager - Accessing SOAP Service
 
WSO2 DSS - JENKINS
WSO2 DSS - JENKINSWSO2 DSS - JENKINS
WSO2 DSS - JENKINS
 
WSO2 DSS - Calling stored procedures with cursors
WSO2 DSS - Calling stored procedures with cursorsWSO2 DSS - Calling stored procedures with cursors
WSO2 DSS - Calling stored procedures with cursors
 
WSO2 DSS - Create a Data service
WSO2 DSS - Create a Data serviceWSO2 DSS - Create a Data service
WSO2 DSS - Create a Data service
 
WSO2 ESB - Acceso a base de datos
WSO2 ESB - Acceso a base de datosWSO2 ESB - Acceso a base de datos
WSO2 ESB - Acceso a base de datos
 
WS02 ESB Service Chaining
WS02 ESB Service ChainingWS02 ESB Service Chaining
WS02 ESB Service Chaining
 
WSO2 REST API Example
WSO2 REST API ExampleWSO2 REST API Example
WSO2 REST API Example
 
WSO2 Transformer Proxy
WSO2 Transformer ProxyWSO2 Transformer Proxy
WSO2 Transformer Proxy
 
JEE 5 - EJB3
JEE 5 - EJB3JEE 5 - EJB3
JEE 5 - EJB3
 
Hibernate 3.2 short manual
Hibernate 3.2 short manualHibernate 3.2 short manual
Hibernate 3.2 short manual
 
Prototipado de pantallas para toma de requisitos
Prototipado de pantallas para toma de requisitosPrototipado de pantallas para toma de requisitos
Prototipado de pantallas para toma de requisitos
 
Modelado de aplicaciones en UML con EA
Modelado de aplicaciones en UML con EAModelado de aplicaciones en UML con EA
Modelado de aplicaciones en UML con EA
 
Log4j 1.2.15 Short Manual
Log4j 1.2.15 Short ManualLog4j 1.2.15 Short Manual
Log4j 1.2.15 Short Manual
 
Arquitectura Mashup Con SilverLight 2
Arquitectura Mashup Con SilverLight 2Arquitectura Mashup Con SilverLight 2
Arquitectura Mashup Con SilverLight 2
 

Último

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 

Último (20)

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 

Json short manual

  • 1. Manual de JSON Formatos ligeros de intercambio de datos en aplicaciones web Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/ Licensed under Creative Commons Attribution 3
  • 2. Guión 1. Introducción 2. Estructuras 3. Formas de representación A. Clases B. Propiedades C. Arrays 4. Configuración e Inicialización 5. Utilización A. eval B. Prototipe  YAML  Librería JSON  GSON  Frameworks del lado cliente  Servicios web  NoSQL JSON Entorno
  • 3. Parte teórica www.JSON.org Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 4. INTRODUCCIÓN – EL PROBLEMA  Los desarrolladores necesitan enviar y recibir datos de manera sencilla pero utilizando un formato común para estructuras complejas.  Se han desarrollado muchas soluciones ad-hoc donde se separan un conjunto de valores separados por comas, puntos y comas u otros separadores pero de serialización y des- serialización complicadas.  Hay que evitar tener que construir parsers cada vez que queremos intercambiar mensajes con el servidor.  XML es opción válida pero no la más adecuada por ser demasiada pesada.
  • 5. INTRODUCCIÓN – UNA SOLUCIÓN JSON (JavaScript Object Notation - Subconjunto ECMAScript)  Formato ligero de intercambio de datos independiente de cualquier lenguaje de programación  Tiene forma de texto plano, de simple de lectura, escritura y generación  Ocupa menos espacio que el formato XML  No es necesario que se construyan parsers personalizados
  • 6. INTRODUCCIÓN – JSON  JSON :  Independiente de un lenguaje específico  Basado en texto  De Formato ligero  Fácil 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 -> application/json
  • 7. INTRODUCCIÓN – JSON  Lenguajes que lo soportan:  ActionScript  C / C++  .NET (C#, VB.NET…)  Delphi  Java  JavaScript  Perl  PHP  Python  Ruby  Etc…
  • 8. FORMAS DE REPRESENTACION  Sirve para representar objetos en el lado de cliente, normalmente en aplicaciones RIA (Rich Internet Application) que utilizan JavaScript.  Object.- Conjunto desordenado de pares nombre/valor  Array.- Colección ordenada de valores  Value.- Puede ser un string, número, booleano, objeto u array  String.- Colección de cero o más caracteres unicode.  Number.- Valor numérico sin comillas
  • 10. FORMA DE OBJECT / CLASE  Es un conjunto de propiedades , cada una con su valor  Notación  Empieza con una llave de apertura {  Terminan con una llave de cierre }  Sus propiedades  Se separan con comas  El nombre y el valor estan separados por dos puntos :
  • 11. FORMA DE OBJECT / CLASE [ { “country”: “New Zealand”, “population”: 3993817, “animals”: [“sheep”, “kiwi”] }, { “country”: “Singapore”, “population”: 4353893, “animals”: [“merlion”, “tiger”] } ]
  • 12. FORMA DE ARRAY  Colección ordenada de valores u objetos  Notación  Empieza con un corchete izquierdo [  Termina con un corchete derecho ]  Los valores se separan con una coma ,
  • 13. FORMA DE ARRAY [ { “country”: “New Zealand”, “population”: 3993817, “animals”: [“sheep”, “kiwi”] } , { “country”: “Singapore”, “population”: 4353893, “animals”: [“merlion”, “tiger”] } ]
  • 14. FORMA DE VALUE  Puede ser  Una cadena de caracteres con comillas dobles  Un número  True, false, null  Un objeto  Un array
  • 15. FORMA DE STRING  Colección 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.
  • 16. 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
  • 17. CODIFICACIÓN DE CARACTERES  Estrictamente UNICODE  Por defecto es UTF-8  UTF-16 y UTF-32 también estan permitidos.
  • 18. FORMA DE VALUE [ { “country”: “New Zealand”, “population”: 3993817, “animals”: [“sheep”, “kiwi”] } , { “country”: “Singapore”, “population”: 4353893, “animals”: [“merlion”, “tiger”] } ] String Number Array Objeto
  • 19. OTRAS FORMAS  Boolean -> true / false  null
  • 20. JSON vs XML ( CLASE ) ... <persona> <nombre>Juan</nombre> <apellidos>Palomo</apellidos> <fecha>10/10/1980</fecha> </persona> ... var myJSONObject = { "nombre": "Juan", "apellidos": "Palomo", "fecha": "10/10/1980" }; XML JSON
  • 21. JSON vs XML ( SIMILITUDES )  Ambos son legibles por los humanos  Tienen una sintaxis muy simple  Son jerárquicos  Son independientes del lenguaje de programación  Se pueden usar empleando Ajax
  • 22. JSON vs XML ( DIFERENCIAS )  Sintáxis dispar  JSON  Es más compacto  Puede ser parseado usando el método eval() de JavaScript  Puede incluir Arrays  Los nombres de las propiedades no pueden ser palabras reservadas de JavaScript  XML  Los nombres son mas extensos  Puede ser validado bajo un conjunto de reglas  JavaScript es normalmente utilizado en el lado cliente.
  • 23. JSON vs XML ( ARRAYS ) ... <listado> <persona> <nombre>Juan</nombre> <apellidos>Palomo</apellidos> <fecha>10/10/1980</fecha> </persona> <persona> <nombre>Juan</nombre> <apellidos>Palomo</apellidos> <fecha>10/10/1980</fecha> </persona> </listado> ... ... var myJSONObject = {"listado": [ { "nombre": "Juan", "apellidos": "Palomo", "fecha": "10/10/1980" }, { "nombre": "Juan", "apellidos": "Palomo", "fecha": "10/10/1980" } ] }; ... XML JSON
  • 24. YAML  Acrónimo de Yet Another Markup LanguageArray  Es un subconjunto de JSON, con más 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.
  • 25. JSON - UTILIZACIÓN  Mediante Librerias ( Por ejemplo en JavaScript )  Transformación de cadenas de texto a objetos  Transformación de objetos a cadenas de texto  Personalización de las transformaciones
  • 26. JSON – ECMAScript 4ta EDICIÓN  Define los siguientes métodos  toJSONString  Object, Array, Date, Boolean, Number, String  parseJSON  String  JSON.parse  JSON.stringify  Estos están disponibles en : www.json.org/json.js
  • 27. JSON – Ejemplo parseJSON <script src=“json.js“ /> <script> var myData = '{"fecha":"mivalorfecha","numero":85}'.parseJSON(); alert( myData.fecha); alert( myData.numero); </script>
  • 28. JSON – Ejemplo parseJSON <script src=“json.js“ /> <script> myData = JSON.parse(text, function (key, value) { var type; if (value && typeof value === 'object') { type = value.type; if (typeof type === 'string' && typeof window[type] === 'function') { return new (window[type])(value); } } return value; } ); </script>
  • 29. JSON – Ejemplo JSON.parse <script src=“json.js“ /> <script> var myData = JSON.parse(‘{"fecha":"mivalorfecha","numero":85}’, function (key, value) { return value; } ); alert( myData.fecha); alert( myData.numero); </script>
  • 30. JSON – EJEMPLO - SUPPLANT var template = '<table border="{border}">' + '<tr><th>Last</th><td>{last}</td></tr>' + '<tr><th>First</th><td>{first}</td></tr>' + '</table>'; var data = { "first": "Carl", "last": "Hollywood", "border": 2 }; mydiv.innerHTML = template.supplant(data);
  • 31. JSON – EJEMPLO - SUPPLANT String.prototype.supplant = function (o) { return this.replace(/{([^{}]*)}/g, function (a, b) { var r = o[b]; return typeof r === 'string' ? r : a; } ); };
  • 32. GSON Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 33. GSON  Librería para convertir objetos Java a JSON y vice-versa.  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.
  • 34. GSON class BagOfPrimitives { private int value1 = 1; private String value2 = "abc"; private transient int value3 = 3; } Clase personalizada  Ejemplo BagOfPrimitives obj = new BagOfPrimitives(); Gson gson = new Gson(); String json = gson.toJson(obj); ==> {"value1":1,"value2":"abc"} Serialización BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); ==> obj2 is just like obj Deserialización
  • 35. GSON  Personalización de la serialización y deserialización. GsonBuilder gson = new GsonBuilder(); gson.registerTypeAdapter(MyType.class, new MySerializer()); gson.registerDeserializer(MyType.class, new MyDeserializer()); gson.registerInstanceCreator(MyType.class, new MyInstanceCreator());
  • 36. GSON  Personalización de la serialización (cuando se llama al método toJson() ). private class DateTimeSerializer implements JsonSerializer<DateTime> { public JsonElement serialize(DateTime src, Type typeOfSrc, JsonSerializationContext context){ new JsonPrimitive(src.toString()); } }
  • 37. GSON  Personalización de la deserialización (cuando se llama al método fromJson() ). private class DateTimeDeserializer implements JsonDeserializer<DateTime> { public DateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return new DateTime(json.getAsJsonPrimitive().getAsString()); } }
  • 38. GSON  Personalización de la deserialización de una instancia ( se puede usar para clases que no tengan constructor sin argumentos) private class MoneyInstanceCreator implements InstanceCreator<Money> { public Money createInstance(Type type) { return new Money("1000000", CurrencyCode.USD); } }
  • 39. Frameworks cliente Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 40. FRAMEWORKS CLIENTE  Actualmente existen frameworks que utilizan de forma nativa JSON para presentar y tratar la información proviniente del servidor.  YUI (Yahoo User Interface)  Dojo  jQuery  Extjs  Otros toolkits Ajax.
  • 41. YUI (Yahoo User Interface)  Da soporte nativo para JSON como fuente de datos para sus diversos componentes (pueden representar los datos visualmente sin ningún proceso previo).  API: YAHOO.lang.JSON  dateToString( objDate )  isValid ( strJson )  parse ( strJson [, filter function(key, value) ] )  stringify ( objeto [, whitelist [, depthLimit] ] )  stringToDate ( strJsonUTC )
  • 42. JQUERY  Puede recuperar datos en formato JSON  API  jQuery.parseJSON( json )  jQuery.getJSON( url, [ data ], [ callback(data, textStatus, xhr) ] )
  • 43. EXTJS  Puede recuperar datos en formato JSON  API  Ext.Ajax.request ( … )  Ext.decode (objServerResponse.responseText);
  • 44. Servicios Web Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 45. SERVICIOS WEB  Cualquier aplicación puede consumir los servicios web de Yahoo y Google pudiendo recibir la respuesta en formato JSON. <script> function listEvents(root) { …. } function ws_results(obj) { ….. } </script> <script src="http://www.google.com/calendar/feeds/developer- calendar@google.com/public/full?alt=json-in-script&callback=listEvents"> </script> <script src="http://search.yahooapis.com/ImageSearchService/V1/ imageSearch?appid=YahooDemo&query=Madonna&output=json&callback=w s_results"></script>
  • 46. NoSQL Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 47. NoSQL  Este término se refiere a bases de datos “no relacionales” que no dan garantías ACID, su característica que más llama la atención es que no existen esquemas de tablas predefinidos.  Algunas de las bases de datos que exponen sus datos mediante JSON/BSON son:  CouchDB  MongoDB  RavenDB  Riak  Keyspace  Pincaster  Sones
  • 48. Visor Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 49. VISOR DE OBJETOS JSON  Hace algún tiempo construí una herramienta visual (visor de objetos) construida con JavaScript, para ver la representación gráfica de las estructuras definidas en formato JSON.  http://emmerson-miranda.appspot.com/Proyectos/json/MostrarElementos/MostrarElementos.html
  • 50. Conclusiones Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/
  • 51. CONCLUSIONES  Formato de intercambio de datos, potente, flexible y sobre todo ligero para intercambiar datos vía HTTP.  Independiente de cualquier lenguaje de programación.  Es soportado por los principales lenguajes del lado servidor  Java, .Net, PHP (pueden serializar y deserializar objetos en formato JSON)  Ideal para construir aplicaciones RIA con frameworks JavaScript  Ej.: YUI  Existen diferentes bases de datos NoSQL que guardan sus datos en formato JSON plano o binario (BSON)
  • 52. - FIN - Licensed under Creative Commons Attribution 3 Emmerson Miranda SCJP 1.5 - SCWCD J2EE 1.5 - SCEA 5 Blog : http://emmersonmiranda.blogspot.com/