SlideShare a Scribd company logo
1 of 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/

More Related Content

What's hot

Problema 16 wha_entidad_relacion
Problema 16 wha_entidad_relacionProblema 16 wha_entidad_relacion
Problema 16 wha_entidad_relacion
Whaleejaa Wha
 
Autómatas Finitos Deterministas y Lenguajes Formales
Autómatas Finitos Deterministas y Lenguajes FormalesAutómatas Finitos Deterministas y Lenguajes Formales
Autómatas Finitos Deterministas y Lenguajes Formales
Sandy Rafael Garcia
 
Modelado con erwin
Modelado con erwinModelado con erwin
Modelado con erwin
Luis Jherry
 

What's hot (20)

Problema 16 wha_entidad_relacion
Problema 16 wha_entidad_relacionProblema 16 wha_entidad_relacion
Problema 16 wha_entidad_relacion
 
Autómatas Finitos Deterministas y Lenguajes Formales
Autómatas Finitos Deterministas y Lenguajes FormalesAutómatas Finitos Deterministas y Lenguajes Formales
Autómatas Finitos Deterministas y Lenguajes Formales
 
Greenfoot 2
Greenfoot 2Greenfoot 2
Greenfoot 2
 
Ejercicio - Personal de departamentos (XSD - XML Schema)
Ejercicio - Personal de departamentos (XSD - XML Schema)Ejercicio - Personal de departamentos (XSD - XML Schema)
Ejercicio - Personal de departamentos (XSD - XML Schema)
 
Modelado con erwin
Modelado con erwinModelado con erwin
Modelado con erwin
 
Propiedades CSS - Background
Propiedades CSS - BackgroundPropiedades CSS - Background
Propiedades CSS - Background
 
CreacióN De Objetos En MySQL
CreacióN De Objetos En MySQLCreacióN De Objetos En MySQL
CreacióN De Objetos En MySQL
 
Unidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIASUnidad 3 CLASES, OBJETOS E INTSANCIAS
Unidad 3 CLASES, OBJETOS E INTSANCIAS
 
MVC
MVCMVC
MVC
 
Tutorial de XML en PDF
Tutorial de XML en PDFTutorial de XML en PDF
Tutorial de XML en PDF
 
OOP Core Concept
OOP Core ConceptOOP Core Concept
OOP Core Concept
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
 
Introduction to OOP concepts
Introduction to OOP conceptsIntroduction to OOP concepts
Introduction to OOP concepts
 
Elementos De Una Clase
Elementos De Una ClaseElementos De Una Clase
Elementos De Una Clase
 
Normalización
NormalizaciónNormalización
Normalización
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
MAPA CONCEPTUAL
MAPA CONCEPTUAL MAPA CONCEPTUAL
MAPA CONCEPTUAL
 
Greenfoot 3
Greenfoot 3Greenfoot 3
Greenfoot 3
 
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOSUnidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS
 
Búsqueda Informada y Explorada
Búsqueda Informada y ExploradaBúsqueda Informada y Explorada
Búsqueda Informada y Explorada
 

Similar to 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
 

Similar to 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
 

More from Emmerson Miranda

More from 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
 

Recently uploaded

RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdfinforme-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
AndreaTurell
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
candy torres
 

Recently uploaded (20)

Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdfinforme-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptxAEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Planeacion para 1er Grado - (2023-2024)-1.docx
Planeacion para 1er Grado - (2023-2024)-1.docxPlaneacion para 1er Grado - (2023-2024)-1.docx
Planeacion para 1er Grado - (2023-2024)-1.docx
 
Ensayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 PreuniversitarioEnsayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 Preuniversitario
 
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 

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/