Introducción
JSON, abreviatura de Notación de Objetos JavaScript, es un formato para compartir datos. Como su nombre indica, JSON deriva del lenguaje de programación JavaScript, pero está disponible para muchos lenguajes, como Python, Ruby, PHP y Java. JSON suele pronunciarse como el nombre "Jason".
JSON también es legible, ligero, ofrece una buena alternativa a XML y requiere mucho menos formato. Esta guía informativa explica los datos que se pueden usar en archivos JSON, así como la estructura y sintaxis generales del formato.
Comprender la sintaxis y la estructura
JSON usa la extensión .json cuando es independiente, y cuando se define en otro formato de archivo (como .html), puede aparecer como una cadena JSON entre comillas o como un objeto asignado a una variable. Este formato se transmite entre un servidor web y un cliente o navegador.
Un objeto JSON es un formato de datos clave-valor, generalmente entre llaves. Al trabajar con JSON, es probable que encuentre objetos JSON en un archivo .json, pero también pueden existir como un objeto JSON o una cadena dentro del contexto de un programa.
Aquí hay un ejemplo de un objeto JSON:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987
}Aunque este es un ejemplo corto, y JSON puede tener muchas líneas, muestra que el formato generalmente se configura con dos paréntesis (o llaves) representados por {} a cada lado, seguidos del par clave-valor. Los pares llenan el espacio entre ellos. La mayoría de los datos utilizados en JSON se encapsulan en un objeto JSON.
Los pares clave-valor se separan con dos puntos, por ejemplo, "clave": "valor". Cada par clave-valor se separa con una coma, por lo que la parte central de un JSON se muestra así: "clave": "valor", "clave": "valor", "clave": "valor". En el ejemplo anterior, el primer par clave-valor es "nombre": "Sammy".
Las claves JSON se encuentran a la izquierda de los dos puntos. Deben ir entre comillas dobles, como "clave", y pueden ser cualquier cadena válida. Dentro de cada objeto, las claves deben ser únicas. Estas cadenas de claves pueden contener espacios, como "nombre", pero esto puede dificultar el acceso al programar, por lo que es mejor usar guiones bajos, como "nombre".
Los valores JSON se encuentran a la derecha de los dos puntos. A nivel granular, deben ser uno de los siguientes seis tipos de datos:
- instrumentos de cuerda
- números
- objetos
- matrices
- Booleanos (verdadero o falso)
- nulo
En un nivel más amplio, los valores también se pueden construir a partir de objetos JSON complejos o tipos de datos de matriz, lo que se analizará en la siguiente sección.
Cada uno de los tipos de datos pasados como valores a JSON mantiene su propia sintaxis, lo que significa que las cadenas están entre comillas, pero los números no.
Con archivos .json, generalmente obtienes una plantilla distribuida en varias líneas, pero JSON también se puede escribir en una sola línea, como en el siguiente ejemplo:
{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }Esto es más común en otro tipo de archivo o cuando encuentra una cadena JSON.
Escribir JSON en varias líneas suele facilitar su lectura, especialmente al trabajar con un conjunto de datos grande. Dado que JSON ignora los espacios entre sus elementos, puede separar los pares clave-valor con dos puntos para que los datos sean aún más legibles:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}Es importante recordar que, aunque un objeto JSON se parece, no tiene el mismo formato que un objeto JavaScript. Por lo tanto, aunque se pueden usar funciones en objetos JavaScript, no se pueden usar como valores en JSON. La característica más importante de JSON es que se puede transferir fácilmente entre lenguajes de programación en un formato compatible con todos los lenguajes participantes. En cambio, los objetos JavaScript solo se pueden manipular directamente a través del lenguaje de programación JavaScript.
JSON puede hacerse más complejo con jerarquías compuestas de objetos anidados y matrices. Aprenderá más sobre estas estructuras complejas en el siguiente paso.
Trabajar con tipos complejos en JSON
Además de las matrices anidadas, JSON permite almacenar objetos anidados en formato JSON. Estos objetos y matrices se envían como valores asignados a claves y también pueden constar de pares clave-valor.
Objetos anidados
En el siguiente archivo users.json, para cada uno de los cuatro usuarios ("sammy", "jesse", "drew", "jamie") se pasa un objeto JSON anidado como valor, con sus propias claves anidadas "nombre de usuario" y "ubicación" correspondientes a cada uno. Cada entrada de usuario en el siguiente bloque de código es un ejemplo de un objeto JSON anidado:
{
"sammy" : {
"username" : "SammyShark",
"location" : "Indian Ocean",
"online" : true,
"followers" : 987
},
"jesse" : {
"username" : "JesseOctopus",
"location" : "Pacific Ocean",
"online" : false,
"followers" : 432
},
"drew" : {
"username" : "DrewSquid",
"location" : "Atlantic Ocean",
"online" : false,
"followers" : 321
},
"jamie" : {
"username" : "JamieMantisShrimp",
"location" : "Pacific Ocean",
"online" : true,
"followers" : 654
}
}En este ejemplo, se utilizan llaves para formar un objeto JSON anidado con el nombre de usuario y la ubicación asociada de cada uno de los cuatro usuarios. Al igual que con cualquier otro valor, al usar objetos, se separan los elementos con comas.
Matrices anidadas
También puedes anidar datos en JSON mediante arrays de JavaScript, que se pasan como valores. JavaScript usa corchetes [ ] en ambos extremos de su tipo de array. Los arrays son conjuntos ordenados y pueden contener valores de diferentes tipos de datos.
Por ejemplo, puede utilizar una matriz cuando trabaja con una gran cantidad de datos que se pueden agrupar, como cuando hay diferentes sitios web y perfiles de redes sociales asociados con un solo usuario.
Con la primera matriz anidada, un perfil de usuario para “Sammy” podría verse así:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"websites" : [
{
"description" : "work",
"URL" : "https://www.digitalocean.com/"
},
{
"desciption" : "tutorials",
"URL" : "https://www.digitalocean.com/community/tutorials"
}
],
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}Las claves "websites" y "social_media" utilizan una matriz para almacenar información sobre los dos enlaces al sitio web y tres enlaces al perfil de redes sociales de Sammy. Se puede identificar como matrices por el uso de corchetes.
El uso de anidación en formato JSON le permite trabajar con datos más complejos y jerárquicos.
Comparación de JSON con XML
XML, o Lenguaje de Marcado Extensible, es una forma de almacenar datos accesibles, legibles tanto para humanos como para máquinas. El formato XML está disponible en numerosos lenguajes de programación.
En muchos sentidos, XML es similar a JSON, pero requiere mucho más texto, y su lectura y escritura son más largas y lentas. XML también requiere un analizador XML, mientras que JSON puede analizarse con una función estándar. Además, a diferencia de JSON, XML no puede usar matrices.
A continuación se muestra un ejemplo del formato XML:
<users>
<user>
<username>SammyShark</username> <location>Indian Ocean</location>
</user>
<user>
<username>JesseOctopus</username> <location>Pacific Ocean</location>
</user>
<user>
<username>DrewSquir</username> <location>Atlantic Ocean</location>
</user>
<user>
<username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
</user>
</users>Ahora, compare los mismos datos presentados en JSON:
{"users": [
{"username" : "SammyShark", "location" : "Indian Ocean"},
{"username" : "JesseOctopus", "location" : "Pacific Ocean"},
{"username" : "DrewSquid", "location" : "Atlantic Ocean"},
{"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }JSON es mucho más compacto y no requiere etiquetas de cierre, a diferencia de XML. Además, XML no utiliza matrices como este ejemplo de JSON (lo cual se puede apreciar por el uso de corchetes).
Si está familiarizado con HTML, notará que XML es bastante similar en el uso de etiquetas. Si bien JSON es más ligero y detallado que XML, y su uso es más rápido en muchas situaciones, incluidas las aplicaciones AJAX, primero deberá conocer el tipo de proyecto en el que está trabajando antes de decidir qué estructuras de datos utilizar.
Resultado
JSON es un formato ligero que permite compartir, almacenar y trabajar con datos. Como formato, JSON ha experimentado una creciente compatibilidad con las API, incluida la API de Twitter. JSON también es un formato natural para su uso en JavaScript y cuenta con numerosas implementaciones en diversos lenguajes de programación populares. Puede consultar la información completa sobre la compatibilidad de los lenguajes en el sitio web "Introducción a JSON".
Dado que probablemente no creará sus propios archivos .json, sino que los obtendrá de otras fuentes, es importante pensar menos en la estructura JSON y más en cómo aprovechar al máximo JSON en sus aplicaciones. Por ejemplo, con la herramienta de código abierto Mr. Data Converter, puede convertir datos CSV o delimitados por tabulaciones que podría encontrar en aplicaciones de hojas de cálculo a JSON. También puede convertir XML a JSON y viceversa utilizando el sitio web con licencia Creative Commons Utilities-online.info.
Finalmente, al traducir otros tipos de datos a JSON, o crear su propio tipo, puede validar su JSON con JSONLint y probar su JSON en el contexto del desarrollo web con JSFiddle.









