JSON (Javascript Object Notation), es una librería diseñada para intercambiar datos entre diferentes lenguajes y plataformas.

Se soportan desde ActionScript hasta Squeak. Pasando por C, C++, Coldfusion, Delphi, Javascript, Perl, PHP, Python, Ruby, …

Los datos se almacenan de una forma sencilla, y que es facilmente entendible por un humano, al mismo tiempo que el proceso de codificación y decodificación es eficiente.

Pretende ser una alternativa ligera a XML, por lo que no es de extrañar que haya conversores de archivos XML a JSON.

Para que os hagáis una idea, podéis echarle un vistazo a estos ejemplos, con sus equivalentes en XML.

La especificación completa (no formal) del lenguaje es como sigue:
En JSON, se presentan de estas formas:
Un objeto es un conjunto desordenado de pares nombre/valor. Un objeto comienza con { (llave de apertura) y termine con } (llave de cierre). Cada nombre es seguido por : (dos puntos) y los pares nombre/valor están separados por , (coma).
Un arreglo es una colección de valores. Un arreglo comienza con [ (corchete izquierdo) y termina con ] (corchete derecho). Los valores se separan por , (coma).
Un valor puede ser una cadena de caracteres con comillas dobles, o un número, o true o false o null, o un objeto o un arreglo. Estas estructuras pueden anidarse.
Una cadena de caracteres es una colección de cero o más caracteres Unicode, encerrados entre comillas dobles, usando barras divisorias invertidas como escape. Un carácter está representado por una cadena de caracteres de un único carácter. Una cadena de carateres es parecida a una cadena de caracteres C o Java.
Un número es similar a un número C o Java, excepto que no se usan los formatos octales y hexadecimales.
Los espacios en blanco pueden insertarse entre cualquier par de símbolos.

Tiene sentido pensar que manejar JSON sea más sencillo que manejar XML, por lo que sin duda para estructuras sencillas que necesitan poder ser interoperadas por varias plataformas, parece una buena alternativa. En efecto, si se quiere almacenar información altamente estructurada, con la posibilidad de realizar búsquedas jerárquicas, parece difícil vencer a XML y XPath.

Como antaño, si no nos hace falta que sea legible por personas, ni multiplataforma, entonces los archivos binarios siguen siendo lo ideal.