Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

JSON, el sistema más popular de intercambio de datos.

JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML. Pronunciado “Ieison”, JSON o notación JSON, cuyo significado en inglés es (JavaScript Object Notation).

Todas las grandes empresas lo emplean en sus comunicaciones. Permite ser integrado con diferentes lenguajes de programación y plataformas.

Durante mucho tiempo XML se convirtió en el estándar de intercambio de datos. El problema era la gran  cantidad de datos que se emplean en los intercambios y flujos de peticiones de información entre diversos servicios.

Con el fin de agilizar la transmisión de datos, el flujo, se emplearon nuevas formas de compresión y formatos.
JSON es más «ligero» (véase referencia inferior), y pequeño a la hora de manejar datos, por eso es una alternativa a XML, es muy fácil leer la información con él.

JSON es un formato de texto que hace fácil la compartición de datos entre dispositivos cliente y servidor. Se basa en el funcionamiento de los objetos de JavaScript. Se encuentra prácticamente disponible en todos los lenguajes de programación existentes de forma nativa.

JSON se emplea habitualmente en entornos donde:

– El tamaño del flujo de datos entre cliente y servidor es de vital importancia (de aquí su uso por Yahoo, Google, etc, que atienden a millones de usuarios)

– Cuando la fuente de datos es explícitamente de fiar.

– Donde no es importante el no disponer de procesamiento similar a XSLT para manipular los datos en el cliente.

Se podrán crear objetos y usarlo en operaciones CRUD. Crear, Obtener, Actualizar, Borrar.

CRUD, se emplea para referirnos en las funciones básicas en las bases de datos, o capa de persistencia en el software. En computación CRUD es el acrónimo de Crear, Obtener, Actualizar y Borrar (del original en inglés: Create, Read, Update and Delete). Se usa para referirse a las funciones básicas en bases de datos.

JSON permite manejar datos de forma minimalista, como si fuesen datos (no relacionales). JSON ha servido de inspiración para las bases de datos no relacionales como MongoDB.

Para usar JSON necesitarás algunos conocimientos del desarrollo en línea u on-line.  Cuando trabajemos con JSON podremos emplear un servidor para poder alojar nuestros archivos de prueba. Podremos trabajar mediante FTP o ejecutar un servidor en localhost.Para ello podemos instalar MAMP o WAMP para realizar pruebas, por ejemplo, aunque existan muchos otros.

Por lo tanto, JSON nace como una necesidad de crear un estándar para el intercambio de datos entre diversos lenguajes de programación, que no ofrecen comunicación entre ellos.

Está basado en un subconjunto de la sintaxis de JavaScript.
La forma habitual el trabajar con datos almacenados en los servidores y acceder mediante enlaces.

JSON no ha sido el único mecanismo, existen otros como YAML, SO XML, OGDL, S Expresion, Plist,etc. Pero podríamos decir que junto con XML, los 2 más extendidos en la actualidad.

Los archivos de JSON son más pequeños. Lo que programamos en 1 línea en JSON, en XML necesitaremos más TAGS o etiquetas. JSON es más fácil de leer, y es más compacto. Con un creciente protagonismo, dentro de todos los lenguajes.

Emplea un formato de texto independiente del lenguaje, facilita la estructura de código para los desarrolladores. Frameworks, librerías, lenguajes, emplean JSON, sobre todo en su backend, en diversos sistemas operativos, y herramientas que empleamos en la actualidad.

Con JSON podemos emplear 2 tipos de estructuras.

Colección de pares nombre/valor.
Lista ordenada de valores.

El formato de JSON se parece mucho a los objetos de Javascript. Las claves se escriben entre comillas dobles.
Existe una clave y un valor.

{“MiNombre”:”Oscar”}  // Observa la notación Camel o Camello

Pueden existir 6 tipos de datos:

Cadenas, objetos, números, matrices, booleanos, null.

Los objetos JSON son más estrictos y no permiten omisiones como en Javascript.

Sobre el Parsing

Para hacer un parsing en JSON o analizar la sintaxis, es decir, analizar el contenido y ubicarlo en las estructuras para ser procesado, identificando los símbolos, la función JSON.parse() es muy segura para realizar parseos pero no tan compatible con browser antiguos.

La función eval es más insegura para parsear pero más extendida.

En la práctica, las consideraciones de seguridad por lo general recomiendan no usar eval sobre datos crudos y debería usarse un analizador JavaScript distinto para garantizar la seguridad. El analizador proporcionado por JSON.org usa

1
eval()

en su función de análisis, protegiéndola con una expresión regular de forma que la función sólo ve expresiones seguras.

www.caniuse.com/json -> En esta web se puede ver una tabla de compatibilidades de los navegadores. También se pueden ver por función (API)

La función JSON.stringify(), convierte un objeto en una cadena, realiza la función inversa, aunque con problemas también de compatibilidad. Aunque para este tipo de problemas disponemos de bibliotecas como Jquery, para evitar los problemas de compatibilidad.

Estructuras de datos en JSON

Ejemplo de un script que maneja objetos JSON con DOM Javascript

<script type=”text/javascript”>
var mivalor;
valor= {“nombre”:”Oscar,”, “ciudad”:”Palencia”};
document.getElementById(“iddelcontenedor”).innerHTML= valor.nombre;
</script>

 

Ejemplo de un Array de objetos

<script type=”text/javascript”>
var misobjetos = [{“nombre”:”oscar”, “apellido:”:”y”}, {“nombre”:”pedro”, “apellido:”x”}];
document.getElementById(“iddelcontenedor”).innerHTML= valor. misobjetos [0].nombre;

// Para obtener el primer elemento;
</script>

Es necesario destacar que el valor, cuando es un número, booleano o es vacío no requiere comillas.

 Ejemplo de anidamiento

<script type=”text/javascript”>
var variedad = {

“Nombre”: ”Oscar”,
“edad”:37,
“casado”:true,
“lenguajes”:[12,34,12,14],
cursos: { "C#”:”Lenguaje de programación”, “Java”:”Lenguaje programación”},
“blog”:”www.palentino.es

};

</script>

 

Accesos

variedad.nombre;
variedad.edad;
variedad.cursos.java;


 

Métodos nativos desde otros lenguajes de programacion

No solamente se puede usar JSON con Javascript, se puede emplear en diferentes lenguajes. Los lenguajes orientados a servicios para realizar transferencias de datos son los que más han cuidado el uso de JSON.
Es por ello, que podemos trabajar con otros lenguajes de forma nativa.

Sírvase como ejemplo el lenguaje más extendido a nivel mundial PHP.
Para realizar operaciones CRUD, a partir de la versión 5.2.0 ya posee funciones nativas para el trabajo con JSON.

Se proporciona a los programadores funciones en el lenguaje. Existen dos funciones en PHP.
json_decode() -> convierte de JSON a un Array en PHP
json_encode() -> convierte un array de PHP a JSON

Desde Python, mediante el import json
json.dumps(misdatos);
json.loads(misdatos);

Desde plataformas móviles como Android, mediante su importación
JSONObject string= new JSONObject(); // Para crear el objeto
String stringJSON)=string.toString(); // Convertir JSON a String

Desde IOS
NSData dataWithContentsOfURL:url]; // Lee los datos desde una URL
[NSJSONSerializaction JSONObjectWithData:jsonData];

Desde JQuery (librería javascript para simplificar el acceso a los elementos)

$.getJSON(“pagina.php”, function(data))  // Para realizar una lectura

Podemos mediante GET traer datos:
$.ajax({
“url”: index.php”,
“type”: “GET”,
“data”:{},
“datatype”:”JSON”}).done(function(data){console.log(data);
});

Realizar un PUSH o enviar datos mediante POST con JQUERY

$.post(“archivo-con-datos.php”, $(this).serialize(), function(data))};

Las aplicaciones que necesitan datos pueden usar JSON de forma asíncrona mediante un request. Mediante la consulta de un servicio. Ejemplo como hace Spotify.

Otro ejemplo sería un archivo con extensión .json. Este archivo creado con un lenguaje determinado contiene los datos con el formato JSON. Por ejemplo leer un SRC externo de un archivo externo JSON, y procesarle con Javascript. La página web estaría alojada en un sitio diferente al archivo JSON, para un trabajo distribuido. Al ser JSON en vez de XML, los datos son más sencillos y compactos (mejor tamaño).


Referencias y enlaces interesantes:

Curiosidades y/o contradicciones:

Si bien es cierto que un fichero JSON es más pequeño que un XML, analicemos esto:

A continuación se muestra un ejemplo simple de definición de barra de menús usando JSON y XML.

JSON:

 {"menu": {
   "id": "fichero",
   "value": "Fichero",
   "popup": {
     "menuitem": [
       {"valor": "Nuevo", "onclick": "CreateNewDoc()"},
       {"valor": "Abrir", "onclick": "OpenDoc()"},
       {"valor": "Cerrar", "onclick": "CloseDoc()"}
     ]
   }
 }
}

XML:

<menu id="fichero" value="Fichero">
    <popup>
      <menuitem value="Nuevo" onclick="CreateNewDoc()" />
      <menuitem value="Abrir" onclick="OpenDoc()" />
      <menuitem value="Cerrar" onclick="CloseDoc()" />
    </popup>
  </menu>

 

Si bien los defensores de JSON a menudo recalcan que éste es más abreviado que XML, obsérvese que los dos ejemplos tienen unos 190 caracteres cuando se eliminan los espacios en blanco. Además, el uso de compresión GZIP para enviar los datos al navegador puede reducir la diferencia de tamaños entre ambos formatos. De hecho, cuando se usa GZIP sobre los ejemplos anteriores el ejemplo en XML es más pequeño por 6 bytes.

Si bien esto no es concluyente, muestra que es necesario experimentar con el conjunto de datos a tratar para determinar qué formato será más eficiente en términos de tamaño. JSON no es siempre más pequeño que XML.

El beneficio de JSON, entonces, en determinadas ocasiones añadiría,  no es que sea más pequeño a la hora de transmitir, sino que representa mejor la estructura de los datos y requiere menos codificación y procesamiento.

Etiquetas:,

Usted debe ser Registrado para publicar un cometario

Home Jquery JSON, el sistema más popular de intercambio de datos.
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies