Notación de objetos de JavaScript

JSON
Extensión.json
Tipo de Mimicaapplication/json
TipoEl intercambio de datos
Extensión deJavaScript
EstándarRFC 4627
¿ Formato abierto ?
Sitio webjson.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]

Características

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]

Relación con otros lenguajes de marcas

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 .

Formato

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" ] }

Usos

En JavaScript

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

Soporte

En JavaScript

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]

Otras metodologías de apoyo

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]

Notas

  1. ^ Presentamos JSON , en JSON . _ Consultado el 16 de abril de 2015 .
    «JSON (Notación de objetos de JavaScript) es un formato ligero de intercambio de datos. Es fácil para los humanos leer y escribir. Es fácil para las máquinas analizar y generar".
  2. ^ ( EN ) Borrador final del estándar ECMA-262 edición 5.1, marzo de 2011 (Rev. 6) - Ecma 262 ( PDF ), en ECMA International , marzo de 2011. Consultado el 16 de abril de 2015 (archivado desde el original el 12 de abril de 2015) .
  3. ^ a b JSON.parse ( ) vs. evaluación , en stackoverflow.com . Consultado el 20 de febrero de 2018 .
  4. ^ El algoritmo de codificación application / json , en W3C .
  5. ^ Notación de objetos JSON JavaScript , en Yahoo! , 19 de julio de 2005. Consultado el 16 de abril de 2015 .
  6. ^ Use XMLHttpRequest , en developer.mozilla.org . Consultado el 20 de febrero de 2018 .
  7. ^ Cómo crear aplicaciones móviles multiplataforma usando nada más que un marcado JSON , en freeCodeCamp.org , 12 de febrero de 2017. Consultado el 17 de octubre de 2020 .
  8. ^ ¿ Puedo usar JSON.parse en caneuse.com ? Consultado el 20 de febrero de 2018 .
  9. ^ ( ES ) $ http , en AngularJS . Consultado el 20 de febrero de 2018 .
    "El servicio $ http es un servicio central de AngularJS que facilita la comunicación con los servidores HTTP remotos a través del objeto XMLHttpRequest del navegador o a través de JSONP".
  10. ^ JQuery.getJSON , en jQuery . _ _ Consultado el 20 de febrero de 2018 .
    "Cargar datos codificados en JSON desde el servidor mediante una solicitud GET HTTP"
  11. ^ ¿ Puedo usar XMLHttpRequest en caneuse.com ? Consultado el 20 de febrero de 2018 .
  12. ^ Douglas Crockford, JSONRequest , json.org , 17 de abril de 2006. Consultado el 20 de febrero de 2018 .

Artículos relacionados

Otros proyectos

Enlaces externos