JSON | |
---|---|
Extensión | .json |
Tipo de Mimica | application/json |
Tipo | El intercambio de datos |
Extensión de | JavaScript |
Estándar | RFC 4627 |
¿ Formato abierto ? | Sí |
Sitio web | json.org |
En informática , en el campo de la programación web , JSON (pronunciado: ˈdʒeɪ.sɑn), acrónimo de JavaScript Object Notation , es un formato adecuado para el intercambio de datos entre aplicaciones cliente/servidor . [1]
Se basa en el estándar de JavaScript ECMA-262, 3.ª edición (diciembre de 1999), pero es independiente de él. Se utiliza en AJAX como alternativa a XML / XSLT . [2]
La simplicidad de JSON ha hecho que su uso sea rápido, especialmente en la programación AJAX . Su uso a través de JavaScript es particularmente simple, de hecho, el intérprete puede analizar una cadena que representa un contenido válido a través de la función JSON.parse(). [3] Esto rápidamente lo hizo muy popular debido a la difusión de la programación JavaScript en el mundo de la Web .
Los tipos de datos soportados por este formato son:
La mayoría de los lenguajes de programación tienen un sistema de tipos muy similar al definido por JSON por lo que han nacido muchos proyectos que permiten el uso de JSON con otros lenguajes como por ejemplo: ActionScript , C , C# , Adobe ColdFusion , Common LISP , Delphi , E , Erlang , Java , JavaScript , Lua , ML , Objective Caml , Perl , PHP , Python , REBOL , Ruby y Rust .
Una secuencia JSON debe tener un encabezado HTTP Content-Type: application/json. [4]
Uno de los primeros en adoptar JSON es Yahoo! , desde 2005. [5]
JSON es un formato de intercambio de datos y, a menudo, se compara con XML , que es un lenguaje de marcado . Ninguno de los dos tiene un sistema de representación de datos binarios , por lo que depende del programador adoptar las convenciones apropiadas (p. ej ., Base64 ) para convertir los datos binarios en forma de texto.
Algunas de las limitaciones de JSON están cubiertas por YAML .
El siguiente ejemplo representa datos de una persona hipotética en formato JSON:
{ "nombre" : "Juan" , "apellido" : "Rossi" , "activo" : verdadero , "númerofavorito" : 42 , "cumpleaños" : { "día" : 1 , "mes" : 1 , "año" : 2000 }, "idiomas" : [ "it" , "en" ] }Aquí hay un ejemplo simple de una solicitud AJAX en JavaScript, a una URL que responde con datos JSON. [6]
var httpRequest = new XMLHttpRequest (); // devolución de llamada httpRequest . addEventListener ( 'load' , function () { // análisis de la respuesta (se supone que está en formato JSON) var data = JSON . parse ( this . responseText ); // hacer algo con los datos de la consola . registro ( fecha ); } ); // inicialización y envío de httpRequest . abierto ( 'GET' , 'https://it.wikipedia.org/w/api.php?action=query&prop=info&titles=Pagina+principal&format=json' ); httpRequest . enviar ();Aplicaciones móviles
Para que el back-end se comunique con la aplicación móvil, es posible enviar los datos a través del protocolo HTTP en formato JSON [7] .
Entre los navegadores sin soporte JSON.parse()mencionar algunas versiones, principalmente anteriores a 2009 , en orden alfabético: [8]
Una gran cantidad de bibliotecas facilitó el uso del formato JSON para realizar solicitudes Ajax. Se mencionan JQuery y AngularJS . [9] [10]
Históricamente ha habido una adopción indiscriminada del método eval()en lugar de JSON.parse()porque estos dos métodos son aparentemente intercambiables. Sin embargo, el método eval()no brinda protección contra entradas arbitrarias y puede generar vulnerabilidades graves. [3]
La compatibilidad con XMLHttpRequest se cita en orden cronológico: [11]
Hay otras formas obsoletas de obtener flujos JSON , por ejemplo, usando el elemento <iframe>o formulario como <form action="url_to_cgi_script" target="name_of_hidden_iframe">. Estos enfoques se usaban ampliamente antes de la amplia compatibilidad con objetos XMLHTTPRequest.
La etiqueta <script> también se puede usar para obtener datos JSON. Esto permite superar algunas limitaciones que surgen con el uso de XMLHTTPRequest pero a expensas de la seguridad. [12]