JSON ( JavaScript Object Notation , pronunciado / dʒ eɪ s ən / ; también / dʒ eɪ ˌ s ɒ n / ) es un estándar abierto de formato de archivo y el intercambio de datos de formato que utiliza legible de texto para almacenar y transmitir datos de objetos que consiste en pares y matrices de atributo-valor (u otros valores serializables ). Es un formato de datos muy común , con una amplia gama de aplicaciones, un ejemplo esaplicaciones web que se comunican con un servidor .
Extensión de nombre de archivo | .json |
---|---|
Tipo de medio de Internet | aplicación / json |
Código de tipo | TEXTO |
Tipo de formato | Intercambio de datos |
Extendido desde | JavaScript |
Estándar | STD 90 ( RFC 8259 ), ECMA-404 , ISO / IEC 21778: 2017 |
¿ Formato abierto ? | sí |
Sitio web | json |
JSON es un formato de datos independiente del idioma . Se derivó de JavaScript , pero muchos lenguajes de programación modernos incluyen código para generar y analizar datos en formato JSON. Los nombres de archivo JSON usan la extensión .json
.
Douglas Crockford originalmente especificó el formato JSON a principios de la década de 2000.
Naming y pronunciación
El acrónimo se originó en State Software, una empresa cofundada por Douglas Crockford y otros en marzo de 2001.
Los 2017 estándar internacional (ECMA-404 e ISO / IEC 21778: 2017) especifica "pronunciado / dʒ eɪ . S ə n / , como en ' Jason y los argonautas ' ". [1] [2] La primera edición (2013) de ECMA-404 no abordó la pronunciación. [3] El Manual de administración de sistemas UNIX y Linux establece que " Douglas Crockford , quien nombró y promovió el formato JSON, dice que se pronuncia como el nombre Jason. Pero de alguna manera, 'JAY-sawn' parece haberse vuelto más común en la comunidad técnica . " [4] Crockford dijo en 2011: "Hay muchas discusiones sobre cómo se pronuncia eso, pero estrictamente no me importa". [5]
Estándares
Después RFC 4627 había estado disponible como su especificación "informativa" desde 2006, JSON se estandarizó por primera vez en 2013, como ECMA -404. [6]RFC 8259 , publicado en 2017, es la versión actual del estándar de Internet STD 90 y sigue siendo coherente con ECMA-404. [7] Ese mismo año, JSON también se estandarizó como ISO / IEC 21778: 2017. [1] Los estándares ECMA e ISO describen solo la sintaxis permitida, mientras que el RFC cubre algunas consideraciones de seguridad e interoperabilidad. [8]
Historia
JSON surgió de la necesidad de un protocolo de comunicación de servidor a navegador sin estado y en tiempo real sin utilizar complementos de navegador como Flash o subprogramas de Java , los métodos dominantes utilizados a principios de la década de 2000. [9]
Se utilizó un precursor de las bibliotecas JSON en un proyecto de juego de intercambio de activos digitales para niños llamado Cartoon Orbit en Communities.com (en el que los cofundadores de State Software habían trabajado previamente) para Cartoon Network, que utilizó un complemento del lado del navegador con un formato de mensajería patentado para manipular elementos HTML dinámicos (este sistema también es propiedad de 3DO). Tras el descubrimiento de las primeras capacidades de Ajax , digiGroups, Noosh y otros utilizaron marcos para pasar información al campo visual de los navegadores del usuario sin actualizar el contexto visual de una aplicación web, obteniendo aplicaciones web ricas en tiempo real utilizando solo las capacidades estándar de HTTP, HTML y JavaScript. de Netscape 4.0.5+ e IE 5+. [ cita requerida ]
Crockford primero especificó y popularizó el formato JSON. [10] Los cofundadores de State Software acordaron construir un sistema que usaba capacidades de navegador estándar y proporcionaba una capa de abstracción para que los desarrolladores web crearan aplicaciones web con estado que tuvieran una conexión dúplex persistente a un servidor web mediante la celebración de dos protocolos de transferencia de hipertexto (HTTP ) las conexiones se abren y las reciclan antes de los tiempos de espera estándar del navegador si no se intercambian más datos. Los cofundadores mantuvieron una mesa redonda y votaron si llamar al formato de datos JSML o JSON, así como el tipo de licencia para que esté disponible. Chip Morningstar desarrolló la idea del marco de aplicación estatal en State Software. [11] [12]
El sistema se vendió a Sun Microsystems , Amazon.com y EDS . El sitio web JSON.org [13] se lanzó en 2002. En diciembre de 2005, Yahoo! comenzó a ofrecer algunos de sus servicios web en JSON. [14]
JSON se basó en un subconjunto del lenguaje de scripting JavaScript (específicamente, Standard ECMA -262 3rd Edition — December 1999 [15] ) y se usa comúnmente con JavaScript, pero es un formato de datos independiente del lenguaje . El código para analizar y generar datos JSON está disponible en muchos lenguajes de programación . El sitio web de JSON enumera las bibliotecas JSON por idioma.
En octubre de 2013, Ecma International publicó la primera edición de su estándar JSON ECMA-404. [6] Ese mismo año, RFC 7158 utilizó ECMA-404 como referencia. En 2014, RFC 7159 se convirtió en la principal referencia para los usos de Internet de JSON, reemplazando RFC 4627 y RFC 7158 (pero conservando ECMA-262 y ECMA-404 como referencias principales). En noviembre de 2017, ISO / IEC JTC 1 / SC 22 publicó ISO / IEC 21778: 2017 [1] como estándar internacional. El 13 de diciembre de 2017, el Grupo de trabajo de ingeniería de Internet quedó obsoleto RFC 7159 cuando se publicó RFC 8259 , que es la versión actual del estándar de Internet STD 90. [16] [17]
Crockford agregó una cláusula a la licencia JSON que establece que "el software se utilizará para el bien, no para el mal", con el fin de abrir las bibliotecas JSON mientras se burla de los abogados corporativos y de aquellos que son demasiado pedantes. Por otro lado, esta cláusula dio lugar a problemas de compatibilidad de licencias de la licencia JSON con otras licencias de código abierto , ya que el software de código abierto y el software libre generalmente no implican restricciones en el propósito de uso. [18]
Sintaxis
El siguiente ejemplo muestra una posible representación JSON que describe a una persona.
{ "firstName" : "John" , "lastName" : "Smith" , "isAlive" : true , "age" : 27 , "address" : { "streetAddress" : "21 2nd Street" , "city" : "Nuevo York " , " estado " : " NY " , " postalCode " : " 10021-3100 " }, " phoneNumbers " : [ { " type " : " home " , " number " : " 212 555-1234 " }, { " escriba " : " oficina " , " número " : " 646 555-4567 " } ], " hijos " : [], " cónyuge " : nulo }
Codificación de caracteres
Aunque Crockford originalmente afirmó y creía que JSON es un subconjunto estricto de JavaScript y ECMAScript, [19] su especificación en realidad permite documentos JSON válidos que no son JavaScript válidos; JSON permite los terminadores de línea Unicode SEPARADOR DE LÍNEA U + 2028 yEl SEPARADOR DE PÁRRAFOS U + 2029 aparecerá sin escape en las cadenas entre comillas, mientras que ECMAScript 2018 y versiones anteriores no. [20] [21] Esto es una consecuencia de JSON que no permite solo "caracteres de control". Para una máxima portabilidad, estos caracteres deben tener un escape de barra invertida. Esta sutileza es importante al generar JSONP . [ investigación original? ]
El intercambio JSON en un ecosistema abierto debe estar codificado en UTF-8 . [7] La codificación admite el conjunto completo de caracteres Unicode, incluidos los caracteres fuera del plano multilingüe básico (U + 10000 a U + 10FFFF). Sin embargo, si se escapan, esos caracteres deben escribirse utilizando pares sustitutos UTF-16 , un detalle que algunos analizadores JSON pasan por alto. [ investigación original? ] Por ejemplo, para incluir el carácter EmojiU + 1F610 😐 CARA NEUTRA en JSON:
{ "face" : "😐" } // o { "face" : "\ uD83D \ uDE10" }
JSON se convirtió en un subconjunto estricto de ECMAScript a partir de la revisión de 2019 del idioma. [22] [23]
Tipos de datos
Los tipos de datos básicos de JSON son:
- Número: un número decimal con signo que puede contener una parte fraccionaria y puede usar notación E exponencial , pero no puede incluir no números como NaN . El formato no distingue entre entero y punto flotante. JavaScript usa un formato de punto flotante de doble precisión para todos sus valores numéricos (hasta más adelante también es compatible con BigInt [24] ), pero otros lenguajes que implementan JSON pueden codificar números de manera diferente.
- Cadena : una secuencia de cero o más caracteres Unicode . Las cadenas están delimitadas con comillas dobles y admiten una sintaxis de escape de barra invertida .
- Booleano : cualquiera de los valores
true
ofalse
- Array : una lista ordenada de cero o más elementos, cada uno de los cuales puede ser de cualquier tipo. Las matrices utilizan la notación de corchetes con elementos separados por comas.
- Objeto : una colección de pares de nombre-valor donde los nombres (también llamados claves) son cadenas. Los objetos están destinados a representar matrices asociativas , [6] donde cada clave es única dentro de un objeto. Los objetos se delimitan con llaves y usan comas para separar cada par, mientras que dentro de cada par, el carácter de dos puntos ':' separa la clave o el nombre de su valor.
null
: un valor vacío, usando la palabranull
Se permiten e ignoran los espacios en blanco alrededor o entre elementos sintácticos (valores y puntuación, pero no dentro de un valor de cadena). Cuatro caracteres específicos se consideran espacios en blanco para este propósito: espacio , tabulación horizontal , salto de línea y retorno de carro . En particular, la marca de orden de bytes no debe ser generada por una implementación conforme (aunque puede aceptarse al analizar JSON). JSON no proporciona sintaxis para comentarios . [25]
Las primeras versiones de JSON (como las especificadas por RFC 4627 ) requería que un texto JSON válido debe consistir solo en un objeto o un tipo de matriz, que podría contener otros tipos dentro de ellos. Esta restricción se eliminó en RFC 7158 , donde un texto JSON se redefinió como cualquier valor serializado.
Los números en JSON son agnósticos con respecto a su representación dentro de los lenguajes de programación. Si bien esto permite serializar números de precisión arbitraria , puede dar lugar a problemas de portabilidad. Por ejemplo, ya no se hace ninguna diferenciación entre los valores enteros y de coma flotante, algunas implementaciones pueden tratar 42
, 42.0
y 4.2E+1
como el mismo número, mientras que otros no. El estándar JSON no establece requisitos con respecto a detalles de implementación como desbordamiento , subdesbordamiento , pérdida de precisión, redondeo o ceros con signo , pero recomienda no esperar más que la precisión de IEEE 754 binary64 para una "buena interoperabilidad". No hay una pérdida de precisión inherente al serializar una representación binaria a nivel de máquina de un número de punto flotante (como binary64) en una representación decimal legible por humanos (como números en JSON), y viceversa, ya que existen algoritmos publicados para hacer esto exactamente y de forma óptima. [26]
Los comentarios se excluyeron deliberadamente de JSON. En 2012, Douglas Crockford describió su decisión de diseño de la siguiente manera: "Eliminé los comentarios de JSON porque vi que la gente los usaba para mantener directivas de análisis, una práctica que habría destruido la interoperabilidad". [25]
JSON no permite las "comas finales", una coma después del último valor dentro de una estructura de datos. [27] Las comas finales son una característica común de los derivados JSON para mejorar la facilidad de uso. [28]
Semántica
Si bien JSON proporciona un marco sintáctico para el intercambio de datos, el intercambio de datos inequívoco también requiere un acuerdo entre el productor y el consumidor sobre la semántica del uso específico de la sintaxis JSON. [29] Un ejemplo de dónde es necesario dicho acuerdo es la serialización de tipos de datos definidos por la sintaxis de JavaScript que no forman parte del estándar JSON, por ejemplo, Fecha, Función, Expresión regular y undefined
. [30]
Metadatos y esquema
El tipo oficial de MIME para el texto JSON es " application/json
", [31] y la mayoría de las implementaciones modernas lo han adoptado. Muchos proveedores de servicios, navegadores, servidores, aplicaciones web, bibliotecas, marcos y API también admiten el tipo MIME no oficial " text/json
" o el tipo de contenido " text/javascript
" por motivos heredados. Ejemplos notables incluyen la API de búsqueda de Google, [32] Yahoo !, [32] [33] Flickr, [32] API de Facebook, [34] marco Lift , [35] Dojo Toolkit 0.4, [36] etc.
El esquema JSON especifica un formato basado en JSON para definir la estructura de los datos JSON para la validación, la documentación y el control de la interacción. Proporciona un contrato para los datos JSON requeridos por una aplicación determinada y cómo se pueden modificar esos datos. [37] JSON Schema se basa en los conceptos de XML Schema (XSD), pero está basado en JSON. Como en XSD, las mismas herramientas de serialización / deserialización se pueden usar tanto para el esquema como para los datos, y es autodescriptivo. Se especifica en un Borrador de Internet en el IETF, actualmente en borrador de 2019-09, que se publicó el 19 de septiembre de 2019. [38] Hay varios validadores disponibles para diferentes lenguajes de programación, [39] cada uno con diferentes niveles de conformidad. No existe una extensión de nombre de archivo estándar, pero algunos han sugerido .schema.json
. [40]
El estándar JSON no admite referencias a objetos , pero existe un borrador de estándar IETF para referencias a objetos basados en JSON. [41] El Dojo Toolkit admite referencias de objetos utilizando JSON estándar; específicamente, el dojox.json.ref
módulo proporciona soporte para varias formas de referencia, incluidas referencias circulares , múltiples, entre mensajes y diferidas . Internamente, ambos lo hacen asignando una "$ref"
clave para dichas referencias y resolviéndola en el momento del análisis; el borrador de IETF solo especifica la sintaxis de la URL, pero Dojo permite más. [42] [43] [44] Alternativamente, existen soluciones no estándar como el uso de las variables Sharp de JavaScript de Mozilla. Sin embargo, esta funcionalidad quedó obsoleta con JavaScript 1.8.5 y se eliminó en Firefox versión 12. [45]
Usos
JSON-RPC es un protocolo de llamada a procedimiento remoto (RPC) construido sobre JSON, como reemplazo de XML-RPC o SOAP . Es un protocolo simple que define solo un puñado de tipos de datos y comandos. JSON-RPC permite que un sistema envíe notificaciones (información al servidor que no requiere una respuesta) y múltiples llamadas al servidor que se pueden responder fuera de servicio.
JavaScript asincrónico y JSON (o AJAJ) se refieren a la misma metodología de página web dinámica que Ajax , pero en lugar de XML , JSON es el formato de datos. AJAJ es una técnica de desarrollo web que proporciona la capacidad de una página web para solicitar nuevos datos después de que se haya cargado en el navegador web . Por lo general, genera nuevos datos del servidor en respuesta a las acciones del usuario en esa página web. Por ejemplo, lo que el usuario escribe en un cuadro de búsqueda , el código del lado del cliente lo envía al servidor, que responde inmediatamente con una lista desplegable de elementos coincidentes de la base de datos .
Si bien JSON es un formato de serialización de datos, se ha utilizado ad hoc como lenguaje de configuración . En este caso de uso, la compatibilidad con comentarios y otras características se ha considerado útil, lo que ha llevado a la creación de varios superconjuntos JSON no estándar . Entre ellos se encuentran HJSON, [46] HOCON y JSON5 (que a pesar de su nombre, no es la quinta versión de JSON). [47] [48] El objetivo principal de la versión 1.2 de YAML era convertir el formato no estándar en un superconjunto JSON estricto. [49]
En 2012, Douglas Crockford dijo lo siguiente sobre los comentarios en JSON cuando se usa como lenguaje de configuración: "Sé que la falta de comentarios entristece a algunas personas, pero no debería ser así. Suponga que está usando JSON para mantener los archivos de configuración, que le gustaría anotar. Continúe e inserte todos los comentarios que desee. Luego, páselo a través de JSMin [50] antes de entregárselo a su analizador JSON ". [25]
JSON está diseñado como un formato de serialización de datos . Sin embargo, su diseño como un subconjunto de JavaScript puede llevar a la idea errónea de que es seguro pasar textos JSON a la función JavaScript . Esto no es seguro, debido a ciertos textos JSON válidos, específicamente aquellos que contieneneval()
SEPARADOR DE LÍNEA U + 2028 o SEPARADOR DE PÁRRAFOS U + 2029 , ya que no es un código JavaScript válido hasta que las especificaciones de JavaScript se actualizaron en 2019, por lo que es posible que los motores más antiguos no lo admitan. [51] Para evitar las muchas trampas causadas por la ejecución de código arbitrario desde Internet,se agregó por primera vezuna nueva funcióna la quinta edición de ECMAScript, [52] que a partir de 2017 es compatible con todos los principales navegadores. Para los navegadores no compatibles, Douglas Crockford proporciona una biblioteca de JavaScript compatible con API. [53] Además, la propuesta TC39 "Subsume JSON" convirtió a ECMAScript en un superconjunto JSON estricto a partir de la revisión de 2019 del lenguaje. [22] [23]JSON.parse()
Varias implementaciones de analizador JSON han sufrido ataques de denegación de servicio y vulnerabilidad de asignación masiva . [54] [55]
Comparación con otros formatos
JSON se promueve como una alternativa de bajo costo para XML, ya que ambos formatos tienen un soporte generalizado para la creación, lectura y decodificación en situaciones del mundo real donde se usan comúnmente. [56] Aparte de XML, los ejemplos podrían incluir CSV y YAML (un superconjunto de JSON). Además, los búferes de protocolo de Google pueden cumplir esta función, aunque no es un lenguaje de intercambio de datos.
YAML
La versión 1.2 de YAML es un superconjunto de JSON; las versiones anteriores no eran estrictamente compatibles. Por ejemplo, escapar de una barra inclinada /
con una barra invertida \
es válido en JSON, pero no lo era en YAML. [49] YAML admite comentarios, mientras que JSON no. [49] [47] [25]
XML
XML se ha utilizado para describir datos estructurados y serializar objetos. Existen varios protocolos basados en XML para representar el mismo tipo de estructuras de datos que JSON para el mismo tipo de intercambio de datos. Los datos se pueden codificar en XML de varias formas. La forma más amplia que utiliza pares de etiquetas da como resultado una representación mucho más grande que JSON, pero si los datos se almacenan en atributos y en forma de 'etiqueta corta' donde se reemplaza la etiqueta de cierre />
, la representación suele tener aproximadamente el mismo tamaño que JSON o simplemente una un poco más grande. Sin embargo, un atributo XML solo puede tener un valor único y cada atributo puede aparecer como máximo una vez en cada elemento.
XML separa "datos" de "metadatos" (mediante el uso de elementos y atributos), mientras que JSON no tiene tal concepto.
Otra diferencia clave es el direccionamiento de valores. JSON tiene objetos con una simple asignación de "clave" a "valor", mientras que en XML el direccionamiento ocurre en "nodos", que reciben una identificación única a través del procesador XML. Además, el estándar XML define un atributo común xml:id
, que puede ser utilizado por el usuario, para establecer un ID de forma explícita.
Nombres de las etiquetas XML no puede contener ninguno de los caracteres !"#$%&'()*+,/;<=>?@[\]^`{|}~
, ni un carácter de espacio, y no pueden comenzar con -
, .
o un dígito numérico, mientras que las teclas pueden JSON (incluso si comillas y barra invertida deben escaparse). [57]
Los valores XML son cadenas de caracteres , sin seguridad de tipos incorporada . XML tiene el concepto de esquema , que permite tipado fuerte, tipos definidos por el usuario, etiquetas predefinidas y estructura formal, lo que permite la validación formal de un flujo XML. JSON tiene una escritura fuerte incorporada y tiene un concepto de esquema similar en JSON Schema .
XML admite comentarios, mientras que JSON no. [58] [25]
Derivados
Se han creado varios formatos de serialización a partir de la especificación JSON. Los ejemplos incluyen GeoJSON , JSON-LD , Smile (formato de intercambio de datos) , UBJSON , JSON-RPC , JsonML y JSON → URL . [59]
Ver también
- Comparación de formatos de serialización de datos
- Jackson (API)
- Transmisión JSON
- Expresión-S
Referencias
- ^ a b c "ISO / IEC 21778: 2017" . ISO . Consultado el 29 de julio de 2019 .
- ^ "Estándar ECMA-404 - La sintaxis de intercambio de datos JSON" (PDF) . Ecma International. Diciembre de 2017. p. 1, nota a pie de página . Consultado el 27 de octubre de 2019 .
- ^ ECMA-404: El formato de intercambio de datos JSON (PDF) (1ª ed.). Ginebra: ECMA International. Octubre 2013.
- ^ Nemeth, Evi; Snyder, Garth; Hein, Trent R .; Whaley, Ben; Mackin, Dan (2017). "19: Alojamiento web" . Manual de administración de sistemas UNIX y Linux (5ª ed.). Addison-Wesley Professional. ISBN 9780134278292. Consultado el 29 de octubre de 2019 .
- ^ "Douglas Crockford: la saga JSON - Vids de transcripción" . transcriptvids.com . Consultado el 29 de octubre de 2019 .
- ^ a b c "El formato de intercambio de datos JSON" (PDF) . ECMA Internacional. Octubre de 2013 . Consultado el 24 de octubre de 2019 .
- ^ a b "El formato de intercambio de datos de notación de objetos JavaScript (JSON)" . IETF. Diciembre de 2017 . Consultado el 16 de febrero de 2018 .
- ^ Bray, Tim. "JSON Redux AKA RFC7159" . En curso . Consultado el 16 de marzo de 2014 .
- ^ "Historia no oficial de Java" . Edu4Java . 26 de mayo de 2014. Archivado desde el original el 26 de mayo de 2014 . Consultado el 30 de agosto de 2019 .
En 1996, Macromedia lanza la tecnología Flash que ocupa el espacio dejado por Java y ActiveX, convirtiéndose en el estándar de facto para la animación del lado del cliente.
- ^ "Douglas Crockford - La saga JSON" . YouTube. 28 de agosto de 2011 . Consultado el 23 de septiembre de 2016 .
- ^ "Biografía de Chip Morningstar" . Dakota del Norte
- ^ "El software estatal rompe la barrera del desarrollo de aplicaciones web con el marco de aplicación estatal: el software permite a los desarrolladores crear aplicaciones verdaderamente interactivas; reduce los costos, el tiempo de desarrollo y mejora la experiencia del usuario" . PR Newswire . 12 de febrero de 2002. Archivado desde el original el 5 de junio de 2013 . Consultado el 19 de marzo de 2013 .
- ^ "JSON" . json.org .
- ^ Yahoo !. "Uso de JSON con los servicios web de Yahoo!" . Archivado desde el original el 11 de octubre de 2007 . Consultado el 3 de julio de 2009 .
- ^ Crockford, Douglas (28 de mayo de 2009). "Presentación de JSON" . json.org . Consultado el 3 de julio de 2009 .
Se basa en un subconjunto del lenguaje de programación JavaScript, estándar ECMA-262 3.a edición, diciembre de 1999.
- ^ "Historial del borrador-ietf-jsonbis-rfc7159bis-04" . Rastreador de datos IETF . Grupo de trabajo de ingeniería de Internet . Consultado el 24 de octubre de 2019 .
2017-12-13 [...] RFC publicado
- ^ "RFC 8259 - El formato de intercambio de datos de notación de objetos JavaScript (JSON)" . Rastreador de datos IETF . Grupo de trabajo de ingeniería de Internet . Consultado el 24 de octubre de 2019 .
Tipo: RFC - Estándar de Internet (diciembre de 2017; Fe de erratas); Desactiva RFC 7159; Tambien conocido bajo STD 90
- ^ Apache y la licencia JSON en LWN.net por Jake Edge (30 de noviembre de 2016)
- ^ Douglas Crockford (10 de julio de 2016). "JSON en JavaScript" . Archivado desde el original el 10 de julio de 2016 . Consultado el 13 de agosto de 2016 .
JSON es un subconjunto de la notación literal de objeto de JavaScript.
- ^ Holm, Magnus (15 de mayo de 2011). "JSON: el subconjunto de JavaScript que no lo es" . El repositorio atemporal . Consultado el 23 de septiembre de 2016 .
- ^ "Propuesta TC39: Subsume JSON" . Comité ECMA TC39. 22 de mayo de 2018.
- ^ a b "Subsume JSON: propuesta para que todo el texto JSON sea válido ECMA-262" . Ecma TC39. 23 de agosto de 2019 . Consultado el 27 de agosto de 2019 .
- ^ a b "Avance a la etapa 4 - tc39 / proposition-json-superset" . GitHub . 22 de mayo de 2018.
- ^ "BigInt - glosario de MDN Web doc" . Mozilla . Consultado el 18 de octubre de 2020 .
- ^ a b c d e Crockford, Douglas (30 de abril de 2012). "Comentarios en JSON" . Archivado desde el original el 4 de julio de 2015 . Consultado el 30 de agosto de 2019 .
Eliminé los comentarios de JSON porque vi que las personas los usaban para mantener directivas de análisis, una práctica que habría destruido la interoperabilidad. Sé que la falta de comentarios entristece a algunas personas, pero no debería ser así. Suponga que está utilizando JSON para mantener los archivos de configuración, que le gustaría anotar. Adelante, inserta todos los comentarios que te gusten. Luego, canalícelo a través de JSMin antes de entregárselo a su analizador JSON.
- ^ Andrysco, Marc; Jhala, Ranjit; Lerner, Sorin. "Impresión de números de coma flotante: un método siempre correcto" (PDF) . Consultado el 27 de julio de 2019 .
- ^ La sintaxis de intercambio de datos JSON (PDF) (2ª ed.). Ecma International . Diciembre de 2017. p. 11.
Un solo símbolo de coma separa un valor de un nombre siguiente.
Mantenimiento CS1: fecha y año ( enlace ) - ^ "JSON5" . json5. Archivado desde el original el 29 de noviembre de 2020 . Consultado el 16 de diciembre de 2020 .
- ^ "La sintaxis de intercambio de datos JSON" (PDF) . Ecma International. Diciembre de 2017 . Consultado el 27 de octubre de 2019 .
La sintaxis JSON no es una especificación de un intercambio de datos completo. El intercambio de datos significativo requiere un acuerdo entre un productor y un consumidor sobre la semántica adjunta a un uso particular de la sintaxis JSON. Lo que sí proporciona JSON es el marco sintáctico al que se puede adjuntar dicha semántica
- ^ "Especificación del idioma ECMAScript 2019" (PDF) . Ecma International. Junio de 2019. Archivado desde el original (PDF) el 12 de abril de 2015 . Consultado el 27 de octubre de 2019 .
- ^ "Tipos de medios" . iana.org . Consultado el 13 de septiembre de 2015 .
- ^ a b c "Manejar aplicación / json y texto / json por benschwarz · Pull Request # 2 · mislav / faraday-stack" . GitHub . Consultado el 13 de septiembre de 2015 .
- ^ "Yahoo !, JavaScript y JSON" . Web programable . 16 de diciembre de 2005 . Consultado el 13 de septiembre de 2015 .
- ^ "Hacer que las solicitudes JSON permitan contenido de texto / javascript por jakeboxer · Pull Request # 148 · AFNetworking / AFNetworking" . GitHub . Consultado el 13 de septiembre de 2015 .
- ^ "lift / Req.scala en master · lift / lift · GitHub" . GitHub . Consultado el 13 de septiembre de 2015 .
- ^ "BrowserIO.js en legacy / branch / 0.4 / src / io - Dojo Toolkit" . dojotoolkit.org . Archivado desde el original el 10 de enero de 2016 . Consultado el 13 de septiembre de 2015 .
- ^ "JSON Schema e Hyper-Schema" . json-schema.org . Consultado el 11 de febrero de 2020 .
- ^ "draft-handrews-json-schema-02 - Esquema JSON: un tipo de medio para describir documentos JSON" . json-schema.org/ . 19 de septiembre de 2019 . Consultado el 11 de febrero de 2020 .
- ^ "Implementaciones de esquemas JSON" . json-schema.org . Consultado el 11 de febrero de 2020 .
- ^ "Extensión de archivo de esquema Json" . Desbordamiento de pila .
- ^ Zyp, Kris (16 de septiembre de 2012). Bryan, Paul C. (ed.). "Referencia JSON: draft-pbryan-zyp-json-ref-03" . Grupo de trabajo de ingeniería de Internet .
- ^ Zyp, Kris. "dojox.json.ref" . Dojo .
- ^ Zyp, Kris (17 de junio de 2008). "Referenciación JSON en Dojo" . SitePen . Consultado el 3 de julio de 2009 .
- ^ von Gaza, Tys (7 de diciembre de 2010). "Referenciación JSON en jQuery" . NUBUNTU . Archivado desde el original el 7 de mayo de 2015 . Consultado el 7 de diciembre de 2010 .
- ^ "Variables nítidas en JavaScript" . Red de desarrolladores de Mozilla . 4 de abril de 2015 . Consultado el 21 de abril de 2012 .
- ^ Edelman, Jason; Lowe, Scott; Oswalt, Matt. Programación y automatización de redes . O'Reilly Media .
para la representación de datos, puede elegir uno de los siguientes: YAML, YAMLEX, JSON, JSON5, HJSON o incluso Python puro
- ^ a b McCombs, Thayne. "Por qué JSON no es un buen lenguaje de configuración" . Gráfico lúcido . Consultado el 15 de junio de 2019 .
- ^ "HOCON (notación de objetos de configuración optimizada para humanos)" . GitHub . 28 de enero de 2019 . Consultado el 28 de agosto de 2019 .
El objetivo principal es: mantener la semántica (estructura de árbol; conjunto de tipos; codificación / escape) de JSON, pero hacerlo más conveniente como formato de archivo de configuración editable por humanos.
- ^ a b c "YAML no es lenguaje de marcado (YAML ™) versión 1.2" . yaml.org . Consultado el 13 de septiembre de 2015 .
- ^ Crockford, Douglas (16 de mayo de 2019). "JSMin" . Consultado el 12 de agosto de 2020 .
JSMin [2001] es una herramienta de minificación que elimina los comentarios y los espacios en blanco innecesarios de los archivos JavaScript.
- ^ "JSON: el subconjunto de JavaScript que no lo es" . Magnus Holm . Consultado el 16 de mayo de 2011 .
- ^ "Quinta edición de ECMAScript" (PDF) . Archivado desde el original (PDF) el 14 de abril de 2011 . Consultado el 18 de marzo de 2011 .
- ^ "douglascrockford / JSON-js" . GitHub . 13 de agosto de 2019.
- ^ "Denegación de servicio y vulnerabilidad de creación de objetos inseguros en JSON (CVE-2013-0269)" . Consultado el 5 de enero de 2016 .
- ^ "Vulnerabilidad de denegación de servicio de procesamiento de contenido JSON de Microsoft .NET Framework" . Consultado el 5 de enero de 2016 .
- ^ "JSON: la alternativa sin grasa a XML" . json.org . Consultado el 14 de marzo de 2011 .
- ^ "Especificación XML 1.1" . Consorcio World Wide Web . Consultado el 26 de agosto de 2019 .
- ^ Saternos, Casimir (2014). Aplicaciones web cliente-servidor con Javascript y Java . pag. 45. ISBN 9781449369316.
- ^ "JSON → Especificación de URL" . En curso . Consultado el 9 de abril de 2021 . CS1 maint: parámetro desalentado ( enlace )
enlaces externos
- Página web oficial
- "Formato de intercambio de datos JSON ECMA-404" (PDF) . ECMA Int'l.
- STD 90 , formato de intercambio de datos JSON