fbpx
Wikipedia

JSON

JSON (acrónimo de JavaScript Object Notation, «notación de objeto de JavaScript») es un formato de texto sencillo para el intercambio de datos. Se trata de un subconjunto de la notación literal de objetos de JavaScript, aunque, debido a su amplia adopción como alternativa a XML, se considera (año 2019) un formato independiente del lenguaje.

Douglas Crockford fue el primero en especificar y popularizar el JSON

Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos es que resulta mucho más sencillo escribir un analizador sintáctico (parser) para él. En JavaScript, un texto JSON se puede analizar fácilmente usando la función eval(), algo que (debido a la ubicuidad de JavaScript en casi cualquier navegador web) ha sido fundamental para que haya sido aceptado por parte de la comunidad de desarrolladores AJAX.

En la práctica, los argumentos a favor de la facilidad de desarrollo de analizadores o de sus rendimientos son poco relevantes, debido a las cuestiones de seguridad que plantea el uso de eval() y el auge del procesamiento nativo de XML incorporado en los navegadores modernos. Por esa razón, 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, Mozilla, etc, que atienden a millones de usuarios) cuando la fuente de datos es explícitamente de fiar y donde no es importante el hecho de no disponer de procesamiento XSLT para manipular los datos en el cliente.

Si bien se tiende a considerar JSON como una alternativa a XML, lo cierto es que no es infrecuente el uso de JSON y XML en la misma aplicación; así, una aplicación de cliente que integra datos de Google Maps con datos meteorológicos en SOAP (Simple Object Access Protocol) necesita hacer uso de ambos formatos.

En diciembre de 2005, Yahoo! comenzó a dar soporte opcional de JSON en algunos de sus servicios web.[1]

Nombre y pronunciación

En inglés, JSON se pronuncia de forma acronímica, como el nombre de la letra J (jay, /yéi/) seguido de la sílaba «son». El resultado habitual, con la primera sílaba tónica (/yéison/), se pronuncia igual que el nombre Jason, aunque Douglas Crockford, desarrollador del formato JSON, marca como tónica la segunda sílaba, como /yeisón/.[2]

En español, hay que tener en cuenta que JSON es una sigla y que en ocasiones no hay una sola forma de pronunciarlas. Atendiendo a la norma ortográfica,[3]​ lo normal sería pronunciarla como /jotasón/. Algunos lo pronuncian como /jasón/, pero se alejaría más de la pronunciación de la sigla introduciendo una letra más que no existe en la sigla (JASON) y por tanto sería una pronunciación incorrecta.

Algunos que no son lingüistas prefieren pronunciar la sigla en español de la manera inglesa,[4]​ pero eso no lo hace más correcto sino que sería más propio del spanglish estadounidense. No se pronuncia FBI como /éfbiai/ en español, como tampoco se dice /síaiei/ al hablar de la CIA. La sigla inglesa ASAP (as soon as posible) se pronuncia /asap/ en español, no /eieseipi/, por economía del lenguaje. Según las reglas del español, se podría lexicalizar como «jotasón/jotasones», pero no hay uso de ello en textos académicos.

Sintaxis

Los tipos de datos disponibles con JSON son:

  • Números: Se permiten números negativos y opcionalmente pueden contener parte fraccional separada por puntos. Ejemplo: 123.456
  • Cadenas: Representan secuencias de cero o más caracteres. Se ponen entre doble comilla y se permiten cadenas de escape. Ejemplo: "Hola"
  • Booleanos: Representan valores booleanos y pueden tener dos valores: true y false
  • null: Representan el valor nulo.
  • Array: Representa una lista ordenada de cero o más valores los cuales pueden ser de cualquier tipo. Los valores se separan por comas y el vector se mete entre corchetes. Ejemplo ["juan","pedro","jacinto"]
  • Objetos: Son colecciones no ordenadas de pares de la forma <nombre>:<valor> separados por comas y puestas entre llaves. El nombre tiene que ser una cadena entre comillas dobles. El valor puede ser de cualquier tipo. Ejemplo:
{ "departamento":8, "nombredepto":"Ventas", "director": "Juan Rodríguez", "empleados":[ { "nombre":"Pedro", "apellido":"Fernández" },{ "nombre":"Jacinto", "apellido":"Benavente" } ] } 

Modelos de procesamiento

Al ser JSON un formato muy extendido para el intercambio de datos, se han desarrollado API para distintos lenguajes (por ejemplo ActionScript, C, C++, C#, ColdFusion, Common Lisp, Delphi, E, Eiffel, Java, JavaScript, ML, Objective-C, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Lua y Visual FoxPro) que permiten analizar sintácticamente, generar, transformar y procesar este tipo de dato.

Los modelos de programación más utilizados para tratar con JSON en los distintos lenguajes son:[5]

  • Modelo de objeto.- El JSON completo es almacenado en memoria en un formato de árbol. Este árbol es navegado, analizado y modificado con las API apropiadas. Como lo carga todo en memoria y luego lo procesa este modelo consume muchos recursos. Sin embargo es muy flexible para manipular el contenido. Este modelo es permitido por ejemplo en Java por la JSR 353 y por la biblioteca Jackson.
  • Modelo de flujo: Los datos son leídos o escritos en bloques. Por ejemplo, cada vez que se lee un bloque, el analizador genera eventos apropiados para indicar el tipo de bloque de que se trata. El cliente puede procesar el contenido escuchando los eventos apropiados. Además es el cliente el que decide como se va leyendo el JSON permitiendo parar o saltar contenidos en mitad del proceso. El proceso de escritura tiene propiedades análogas. Por ejemplo este modelo es permitido en java por la JSR 353.
  • Convirtiendo los objetos JSON en objetos del lenguaje. En Java esto es realizado por ejemplo por las bibliotecas Jackson y Gson.

Uso de JSON

En teoría, es trivial analizar JSON en JavaScript usando la función JSON.parse() incorporada en el lenguaje. Por ejemplo:

miObjeto = JSON.parse(json_datos); 

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 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.

Un ejemplo de acceso a datos JSON usando XMLHttpRequest es:

var http_request = new XMLHttpRequest(); var url = "http://example.net/jsondata.php"; // Esta URL debería devolver datos JSON // Descarga los datos JSON del servidor. http_request.onreadystatechange = handle_json; http_request.open("GET", url, true); http_request.send(null); function handle_json() { if (http_request.readyState == 4) { if (http_request.status == 200) { var json_data = http_request.responseText; var the_object = eval("(" + json_data + ")"); } else { alert("Ocurrió un problema con la URL."); } http_request = null; } } 

Obsérvese que el uso de XMLHttpRequest en este ejemplo no es compatible con todos los navegadores, ya que existen variaciones sintácticas para Internet Explorer, Opera, Safari, y navegadores basados en Mozilla.

También es posible usar elementos <iframe> ocultos para solicitar los datos de manera asíncrona, o usar peticiones <form target="url_to_cgi_script" />. Estos métodos eran los más habituales antes del advenimiento del uso generalizado de XMLHttpRequest.

Hay una biblioteca[6]​ para el framework .NET que exporta clases .NET con la sintaxis de JSON para la comunicación entre cliente y servidor, en ambos sentidos.

Ejemplo de JSON

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

JSON:

{ "menu": { "id": "file", "value": "File", "popup": {  "menuitems": [  {  "value": "New", "onclick": "CreateNewDoc()"  },{  "value": "Open", "onclick": "OpenDoc()"  },{  "value": "Close", "onclick": "CloseDoc()"  }  ] } } } 

Es una posible representación JSON del siguiente XML:

 <menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()" /> <menuitem value="Open" onclick="OpenDoc()" /> <menuitem value="Close" onclick="CloseDoc()" /> </popup> </menu> 

Comparación con XML y otros lenguajes de marcado

Hay muchos analizadores JSON en el lado del servidor, existiendo al menos un analizador para la mayoría de los entornos. En algunos lenguajes, como Java o PHP, hay diferentes implementaciones donde escoger. En JavaScript, el análisis es posible de manera nativa con la función JSON.parse(). Ambos formatos carecen de un mecanismo para representar grandes objetos binarios.

Con independencia de la comparación con XML, JSON puede ser muy compacto y eficiente si se usa de manera efectiva. Por ejemplo, la aplicación DHTML de búsqueda en (en inglés). Archivado desde el original el 21 de mayo de 2006.  recibe los listados de directorio como JSON desde el servidor. Esta aplicación de búsqueda está permanentemente consultando al servidor por nuevos directorios, y es notablemente rápida, incluso sobre una conexión lenta.

Los entornos en el servidor normalmente requieren que se incorpore una función u objeto analizador de JSON. Algunos programadores, especialmente los familiarizados con el lenguaje C, encuentran JSON más natural que XML, pero otros desarrolladores encuentran su escueta notación algo confusa, especialmente cuando se trata de datos fuertemente jerarquizados o anidados muy profundamente.

Hay más comparaciones entre JSON y XML en JSON.org[7]

YAML es un superconjunto de JSON que trata de superar algunas de las limitaciones de este. Aunque es significativamente más complejo,[8]​ aún puede considerarse como ligero. El lenguaje de programación Ruby utiliza YAML como el formato de serialización por defecto. Así pues, es posible manejar JSON con bastante sencillez.

Véase también

Referencias

  1. Yahoo!. . Archivado desde el original el 6 de enero de 2010. Consultado el 2 de marzo de 2010. 
  2. «Doug Crockford "Google Tech Talks: JavaScript: The Good Parts"». 7 de febrero de 2009. 
  3. RAE. «sigla | Diccionario panhispánico de dudas». «Diccionario panhispánico de dudas». Consultado el 25 de junio de 2021. 
  4. Kapić, Edin (15 de abril de 2016). «“Jotasón” y la (mala) pronunciación de términos informáticos». EdinKapic.com. Consultado el 2 de septiembre de 2018. 
  5. RESTful Java Web Services. Jobinesh Purushothaman. Packt Publishing 2015. Segunda edición
  6. http://ajax.schwarz-interactive.de el 7 de marzo de 2011 en Wayback Machine.
  7. «Página de ejemplo». JSON.org (en inglés). 
  8. Ippolito, Bob (19 de julio de 2005). (en inglés). Archivado desde el original el 14 de febrero de 2012. Consultado el 22 de noviembre de 2012. 

Enlaces externos

  • The JSON Specification (en inglés) - Especificación JSON (en castellano)
  • JSON: The Fat-Free Alternative to XML (en inglés)
  • (en castellano)
  • JSON Parser: View and Edit JSON (en inglés)
Tutoriales
  • Comparación entre XML, JSON y objetos Javascript (en inglés)
  • Speeding Up AJAX with JSON Muestra lo sencillo que es referenciar JSON en lugar de XML (en inglés)
  • Muestra como obtener información en AJAX consultando un archivo PHP. Tiene en cuenta el problema de los caracteres especiales. (en español)
  • Animaciones para web con JSON Muestra como exportar animaciones con After Effects en formato JSON (en español)
  •   Datos: Q2063
  •   Multimedia: JavaScript Object Notation

json, acrónimo, javascript, object, notation, notación, objeto, javascript, formato, texto, sencillo, para, intercambio, datos, trata, subconjunto, notación, literal, objetos, javascript, aunque, debido, amplia, adopción, como, alternativa, considera, año, 201. JSON acronimo de JavaScript Object Notation notacion de objeto de JavaScript es un formato de texto sencillo para el intercambio de datos Se trata de un subconjunto de la notacion literal de objetos de JavaScript aunque debido a su amplia adopcion como alternativa a XML se considera ano 2019 un formato independiente del lenguaje JSONhttps json org https json org json fr html y https json org json it htmlInformacion generalExtension de archivo jsonTipo de MIMEapplication jsonTipo de formatoLenguaje de marcadoExtendido deJavaScriptEstandar es RFC 7159 ECMA 404Formato abierto editar datos en Wikidata Douglas Crockford fue el primero en especificar y popularizar el JSON Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos es que resulta mucho mas sencillo escribir un analizador sintactico parser para el En JavaScript un texto JSON se puede analizar facilmente usando la funcion a href Eval html title Eval eval a algo que debido a la ubicuidad de JavaScript en casi cualquier navegador web ha sido fundamental para que haya sido aceptado por parte de la comunidad de desarrolladores AJAX En la practica los argumentos a favor de la facilidad de desarrollo de analizadores o de sus rendimientos son poco relevantes debido a las cuestiones de seguridad que plantea el uso de eval y el auge del procesamiento nativo de XML incorporado en los navegadores modernos Por esa razon JSON se emplea habitualmente en entornos donde el tamano del flujo de datos entre cliente y servidor es de vital importancia de aqui su uso por Yahoo Google Mozilla etc que atienden a millones de usuarios cuando la fuente de datos es explicitamente de fiar y donde no es importante el hecho de no disponer de procesamiento XSLT para manipular los datos en el cliente Si bien se tiende a considerar JSON como una alternativa a XML lo cierto es que no es infrecuente el uso de JSON y XML en la misma aplicacion asi una aplicacion de cliente que integra datos de Google Maps con datos meteorologicos en SOAP Simple Object Access Protocol necesita hacer uso de ambos formatos En diciembre de 2005 Yahoo comenzo a dar soporte opcional de JSON en algunos de sus servicios web 1 Indice 1 Nombre y pronunciacion 2 Sintaxis 3 Modelos de procesamiento 4 Uso de JSON 5 Ejemplo de JSON 6 Comparacion con XML y otros lenguajes de marcado 7 Vease tambien 8 Referencias 9 Enlaces externosNombre y pronunciacion EditarEn ingles JSON se pronuncia de forma acronimica como el nombre de la letra J jay yei seguido de la silaba son El resultado habitual con la primera silaba tonica yeison se pronuncia igual que el nombre Jason aunque Douglas Crockford desarrollador del formato JSON marca como tonica la segunda silaba como yeison 2 En espanol hay que tener en cuenta que JSON es una sigla y que en ocasiones no hay una sola forma de pronunciarlas Atendiendo a la norma ortografica 3 lo normal seria pronunciarla como jotason Algunos lo pronuncian como jason pero se alejaria mas de la pronunciacion de la sigla introduciendo una letra mas que no existe en la sigla JASON y por tanto seria una pronunciacion incorrecta Algunos que no son linguistas prefieren pronunciar la sigla en espanol de la manera inglesa 4 pero eso no lo hace mas correcto sino que seria mas propio del spanglish estadounidense No se pronuncia FBI como efbiai en espanol como tampoco se dice siaiei al hablar de la CIA La sigla inglesa ASAP as soon as posible se pronuncia asap en espanol no eieseipi por economia del lenguaje Segun las reglas del espanol se podria lexicalizar como jotason jotasones pero no hay uso de ello en textos academicos Sintaxis EditarLos tipos de datos disponibles con JSON son Numeros Se permiten numeros negativos y opcionalmente pueden contener parte fraccional separada por puntos Ejemplo 123 456 Cadenas Representan secuencias de cero o mas caracteres Se ponen entre doble comilla y se permiten cadenas de escape Ejemplo Hola Booleanos Representan valores booleanos y pueden tener dos valores true y false null Representan el valor nulo Array Representa una lista ordenada de cero o mas valores los cuales pueden ser de cualquier tipo Los valores se separan por comas y el vector se mete entre corchetes Ejemplo juan pedro jacinto Objetos Son colecciones no ordenadas de pares de la forma lt nombre gt lt valor gt separados por comas y puestas entre llaves El nombre tiene que ser una cadena entre comillas dobles El valor puede ser de cualquier tipo Ejemplo departamento 8 nombredepto Ventas director Juan Rodriguez empleados nombre Pedro apellido Fernandez nombre Jacinto apellido Benavente Modelos de procesamiento EditarAl ser JSON un formato muy extendido para el intercambio de datos se han desarrollado API para distintos lenguajes por ejemplo ActionScript C C C ColdFusion Common Lisp Delphi E Eiffel Java JavaScript ML Objective C Objective CAML Perl PHP Python Rebol Ruby Lua y Visual FoxPro que permiten analizar sintacticamente generar transformar y procesar este tipo de dato Los modelos de programacion mas utilizados para tratar con JSON en los distintos lenguajes son 5 Modelo de objeto El JSON completo es almacenado en memoria en un formato de arbol Este arbol es navegado analizado y modificado con las API apropiadas Como lo carga todo en memoria y luego lo procesa este modelo consume muchos recursos Sin embargo es muy flexible para manipular el contenido Este modelo es permitido por ejemplo en Java por la JSR 353 y por la biblioteca Jackson Modelo de flujo Los datos son leidos o escritos en bloques Por ejemplo cada vez que se lee un bloque el analizador genera eventos apropiados para indicar el tipo de bloque de que se trata El cliente puede procesar el contenido escuchando los eventos apropiados Ademas es el cliente el que decide como se va leyendo el JSON permitiendo parar o saltar contenidos en mitad del proceso El proceso de escritura tiene propiedades analogas Por ejemplo este modelo es permitido en java por la JSR 353 Convirtiendo los objetos JSON en objetos del lenguaje En Java esto es realizado por ejemplo por las bibliotecas Jackson y Gson Uso de JSON EditarEn teoria es trivial analizar JSON en JavaScript usando la funcion JSON parse incorporada en el lenguaje Por ejemplo miObjeto JSON parse json datos En la practica las consideraciones de seguridad por lo general recomiendan no usar eval sobre datos crudos y deberia usarse un analizador JavaScript distinto para garantizar la seguridad El analizador proporcionado por JSON org usa eval en su funcion de analisis protegiendola con una expresion regular de forma que la funcion solo ve expresiones seguras Un ejemplo de acceso a datos JSON usando XMLHttpRequest es var http request new XMLHttpRequest var url http example net jsondata php Esta URL deberia devolver datos JSON Descarga los datos JSON del servidor http request onreadystatechange handle json http request open GET url true http request send null function handle json if http request readyState 4 if http request status 200 var json data http request responseText var the object eval json data else alert Ocurrio un problema con la URL http request null Observese que el uso de XMLHttpRequest en este ejemplo no es compatible con todos los navegadores ya que existen variaciones sintacticas para Internet Explorer Opera Safari y navegadores basados en Mozilla Tambien es posible usar elementos lt iframe gt ocultos para solicitar los datos de manera asincrona o usar peticiones lt form target url to cgi script gt Estos metodos eran los mas habituales antes del advenimiento del uso generalizado de XMLHttpRequest Hay una biblioteca 6 para el framework NET que exporta clases NET con la sintaxis de JSON para la comunicacion entre cliente y servidor en ambos sentidos Ejemplo de JSON EditarA continuacion se muestra un ejemplo simple de definicion de barra de menus usando JSON y XML JSON menu id file value File popup menuitems value New onclick CreateNewDoc value Open onclick OpenDoc value Close onclick CloseDoc Es una posible representacion JSON del siguiente XML lt menu id file value File gt lt popup gt lt menuitem value New onclick CreateNewDoc gt lt menuitem value Open onclick OpenDoc gt lt menuitem value Close onclick CloseDoc gt lt popup gt lt menu gt Comparacion con XML y otros lenguajes de marcado EditarHay muchos analizadores JSON en el lado del servidor existiendo al menos un analizador para la mayoria de los entornos En algunos lenguajes como Java o PHP hay diferentes implementaciones donde escoger En JavaScript el analisis es posible de manera nativa con la funcion JSON parse Ambos formatos carecen de un mecanismo para representar grandes objetos binarios Con independencia de la comparacion con XML JSON puede ser muy compacto y eficiente si se usa de manera efectiva Por ejemplo la aplicacion DHTML de busqueda en BarracudaDrive en ingles Archivado desde el original el 21 de mayo de 2006 recibe los listados de directorio como JSON desde el servidor Esta aplicacion de busqueda esta permanentemente consultando al servidor por nuevos directorios y es notablemente rapida incluso sobre una conexion lenta Los entornos en el servidor normalmente requieren que se incorpore una funcion u objeto analizador de JSON Algunos programadores especialmente los familiarizados con el lenguaje C encuentran JSON mas natural que XML pero otros desarrolladores encuentran su escueta notacion algo confusa especialmente cuando se trata de datos fuertemente jerarquizados o anidados muy profundamente Hay mas comparaciones entre JSON y XML en JSON org 7 YAML es un superconjunto de JSON que trata de superar algunas de las limitaciones de este Aunque es significativamente mas complejo 8 aun puede considerarse como ligero El lenguaje de programacion Ruby utiliza YAML como el formato de serializacion por defecto Asi pues es posible manejar JSON con bastante sencillez Vease tambien EditarAJAX Freebase Lenguaje jq para procesamiento de JSON JavaScript XMLHttpRequest XML YAML superconjunto de JSONReferencias Editar Yahoo Using JSON with Yahoo Web services Archivado desde el original el 6 de enero de 2010 Consultado el 2 de marzo de 2010 Doug Crockford Google Tech Talks JavaScript The Good Parts 7 de febrero de 2009 RAE sigla Diccionario panhispanico de dudas Diccionario panhispanico de dudas Consultado el 25 de junio de 2021 Kapic Edin 15 de abril de 2016 Jotason y la mala pronunciacion de terminos informaticos EdinKapic com Consultado el 2 de septiembre de 2018 RESTful Java Web Services Jobinesh Purushothaman Packt Publishing 2015 Segunda edicion http ajax schwarz interactive de Archivado el 7 de marzo de 2011 en Wayback Machine Pagina de ejemplo JSON org en ingles Ippolito Bob 19 de julio de 2005 What happened to YAML en ingles Archivado desde el original el 14 de febrero de 2012 Consultado el 22 de noviembre de 2012 Enlaces externos EditarThe JSON Specification en ingles Especificacion JSON en castellano JSON The Fat Free Alternative to XML en ingles Presentacion util de JSON en castellano JSON Parser View and Edit JSON en ingles Tutoriales AJAX without XML Comparacion entre XML JSON y objetos Javascript en ingles Speeding Up AJAX with JSON Muestra lo sencillo que es referenciar JSON en lugar de XML en ingles Comunicacion AJAX PHP con JSON Muestra como obtener informacion en AJAX consultando un archivo PHP Tiene en cuenta el problema de los caracteres especiales en espanol Animaciones para web con JSON Muestra como exportar animaciones con After Effects en formato JSON en espanol Datos Q2063 Multimedia JavaScript Object NotationObtenido de https es wikipedia org w index php title JSON amp oldid 136998675, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos