Tutorial JSON para principiantes: una guía completa con ejemplos

La notación de objetos JavaScript (JSON) proporciona una forma sencilla y legible por humanos de almacenar e intercambiar datos basados ​​en texto. Como consultor de ciberseguridad que ayuda a las pequeñas empresas a administrar datos de forma segura, suelo recomendar JSON para transmitir datos entre aplicaciones y servidores.

En este completo tutorial de JSON para principiantes, compartiré mi guía del mundo real para ayudarle a utilizar de forma eficaz este formato de datos versátil.

¿Qué es JSON y por qué usarlo?

JSON significa notación de objetos JavaScript. Almacena estructuras de datos simples en un formato de texto flexible que cuenta con un amplio soporte.

Como experto en ciberseguridad recomiendo JSON porque ofrece muchas ventajas:

Ligero– Los archivos JSON son compactos y muy portátiles. Esto admite un rápido intercambio de datos utilizando un ancho de banda mínimo.

Legible por humanos– JSON utiliza una sintaxis fácil de entender para almacenar datos en pares clave/valor y listas ordenadas. Esto simplifica la inspección de datos y la resolución de problemas.

Popular– JSON es el estándar de facto para servicios web y el intercambio de datos de aplicaciones móviles, compatible con casi todos los lenguajes y plataformas.

Idioma independiente– Las bibliotecas JSON le permiten analizar y generar JSON sin esfuerzo en cualquier lenguaje de programación moderno.

Para compartir datos rápidamente entre aplicaciones y servidores, siempre recurro primero a la simplicidad y ubicuidad de JSON. Es un formato de transporte ligero ideal.

Breve historia de JSON

Douglas Crockford documentó JSON por primera vez en 2001 como una forma de representar objetos JavaScript para la transferencia de datos. Esto ayudó a abordar las limitaciones con protocolos más pesados ​​como XML y SOAP.

En unos pocos años, JSON se adoptó ampliamente:

  • 2002– Sitio oficial JSON lanzado y especificación publicada
  • 2005–Yahoo! comienza a proporcionar soporte de servicios web para JSON
  • 2013– JSON se convierte en un estándar ECMA internacional
  • 2017– Lanzamiento del último estándar de formato JSON

Como puede ver, JSON evolucionó rápidamente desde sus orígenes de JavaScript como un formato de intercambio de datos especializado hasta convertirse en el estándar universal para aplicaciones y servicios web que es hoy.

Descripción general de las reglas de sintaxis JSON

JSON emplea reglas gramaticales sencillas para estructurar datos:

  • Los datos están formateados como{key:value}pares– Proporciona una representación abstracta de atributos y valores.

  • Separados por comas– Cada par clave/valor está separado por comas.

  • Las llaves sostienen objetos– Un objeto almacena una colección desordenada de pares nombre/valor.

  • Los corchetes contienen matrices– Las matrices almacenan una colección ordenada y secuencial de valores.

Comprender estos elementos estructurantes fundamentales le ayudará a trabajar con datos con formato JSON.

Tipos de datos JSON

JSON admite tipos de datos comunes para mayor flexibilidad:

Cadena– Texto entre comillas dobles. Se permiten Unicode con caracteres de escape de barra invertida.

Número– Números enteros o de coma flotante. No se permiten hexadecimales ni octales.

Booleano– Valores verdaderos o falsos.

Formación– Lista ordenada y separada por comas encerrada entre[]paréntesis.

Objeto– Desordenado{key:value}pares encerrados en{}tirantes.

nulo– Valor vacío que indica que no hay datos.

Al ceñirse a estas primitivas de almacenamiento de datos, JSON mantiene la confiabilidad y la simplicidad.

Tutorial de JSON de muestra

Considere este breve ejemplo de almacenamiento de información de un libro en JSON:

{
  "books": [
    {
      "id": "444",
      "language": "C",
      "edition": "First",
      "author": "Dennis Ritchie"  
    },
    {    
      "id": "555",
      "language": "C++", 
      "edition": "Second",
      "author": "Bjarne Stroustrup"
    }
  ]
}

Este desglose ayuda a interpretar la estructura:

  • Las llaves exteriores denotan en generalobjeto
  • "libros"llavecon unformaciónvalor
  • La matriz almacena unlistade libroobjetos
  • libro individualobjetoscontenerclave: pares de valorescomo"id": "444"

Como puede ver, JSON consta de objetos y matrices anidados para representar datos del mundo real.

Usando datos JSON

En la práctica, JSON se utiliza de dos formas principales:

Transporte de datos cliente-servidor

JSON sobresale en codificar objetos y transmitir datos bidireccionalmente entre clientes y servidores del navegador. Esto facilita el intercambio de datos en tiempo real sin necesidad de actualizar la página completa.

Archivos de configuración

JSON proporciona un formato de archivo portátil para conservar configuraciones y parámetros serializando objetos en documentos de texto organizados.

Otros casos de uso comunes de JSON incluyen:

  • Servicios web y API públicas
  • Aplicaciones de una sola página
  • Almacenamiento de datos de aplicaciones móviles
  • Cachés de datos del lado del servidor
  • Canalizaciones de análisis multiplataforma

En cualquier lugar donde se necesite serialización de objetos estandarizada y portabilidad de datos, JSON brilla.

Comparando JSON vs XML

Tanto el formato JSON como el XML surgieron para satisfacer las crecientes demandas de intercambio de datos:

XML

  • Formato de documento de texto extremadamente flexible
  • El soporte enriquecido de metadatos permite una semántica compleja
  • Detallado y desafiante para que los humanos lo escaneen
  • Requiere analizadores XML especializados

JSON

  • Originalmente para JavaScript pero ahora independiente del idioma
  • Más sencillo de generar/analizar usando sintaxis nativa
  • Altamente optimizado para transferencias de datos más pequeñas
  • Soporte de metadatos limitado por diseño

En resumen, JSON se adapta a necesidades de intercambio de datos más simples, mientras que XML maneja documentos y semántica complejos.

Código de ejemplo JSON por idioma

Desde que la compatibilidad con JSON se volvió universal en todos los idiomas, la transmisión de objetos es sencilla.

A continuación se muestra un ejemplo que codifica la misma estructura de datos en varios idiomas:

Pitón

import json

person = {"id": "420", "name": "John"} 

person_json = json.dumps(person)
print(person_json)

# Output: {"id": "420", "name": "John"}

javascript

const person = {id: "420", name: "John"};

const personJson = JSON.stringify(person);  
console.log(personJson);

// Output: {"id": "420","name": "John"} 

Java

import org.json.JSONObject;

JSONObject person = new JSONObject();
person.put("id", "420"); 
person.put("name", "John");

String personJson = person.toString();
System.out.print(personJson);  

// Output: {"id":"420","name":"John"}

Esto ilustra la interoperabilidad del lenguaje natural de JSON para transportar datos.

Preocupaciones de seguridad JSON

Si bien es conveniente, JSON plantea riesgos potenciales de seguridad que se deben considerar:

  • Ejecución de código JavaScript– Por diseño, JSON permite declaraciones de JavaScript comowhile(1)que podría ejecutarse sin cesar. La mayoría de los analizadores ahora bloquean esta capacidad.

  • Ataques de denegación de servicio– Los documentos JSON profundamente anidados pueden abrumar a los analizadores y utilizar excesiva memoria del servidor y tiempo de CPU.

  • Fuga de información– JSON puede exponer detalles de aplicaciones privadas a través de nombres o valores de claves descriptivas.

Como experto en ciberseguridad, aconsejo tomar tres medidas de precaución:

  1. Validar– Verifique todos los datos JSON de entrada/salida con un esquema

  2. desinfectar– Eliminar metadatos superfluos antes de transmitir JSON

  3. Monitor– Esté atento a documentos JSON inusualmente grandes que indiquen ataques

Con la vigilancia adecuada, las ventajas de JSON superan con seguridad los riesgos para la mayoría de las aplicaciones.

Herramientas y utilidades JSON útiles

Existen muchas herramientas útiles para manipular, validar y transformar JSON:

Editores y formateadores

  • JSONLint– Valida y reformatea JSON
  • Editor JSON en línea– Visualiza/edita documentos JSON visualmente

Transformaciones

  • JSON a YAML– Convierte JSON a formato YAML y viceversa.
  • XML a JSON– Genera formato JSON de documentos XML.

Mejoramiento

  • Minificador JSON– Elimina espacios en blanco innecesarios para minimizar el tamaño.
  • Compresión GZIP– Reduce el ancho de banda de transmisión de la red.

Aprovechar adecuadamente estas utilidades JSON puede agilizar el desarrollo y la resolución de problemas.

Conclusión y recomendaciones

Después de muchos años ayudando a los clientes a utilizar JSON de forma segura, mi consejo es:

Aproveche la ubicuidad de JSON: es compatible con casi todas partes. Utilice bibliotecas JSON existentes para no reinventar ruedas. Validar documentos sistemáticamente para evitar sorpresas. Supervise vulnerabilidades como ataques de denegación de servicio.

Adherirse a los principios de diseño simple de JSON en torno a objetos y listas fomenta la creación de datos portátiles y claramente estructurados. JSON basado en ASCII requiere menos ancho de banda que las codificaciones binarias.

Para compartir rápidamente cargas útiles de datos livianos, recomiendo comenzar primero con JSON amigable para los humanos antes de evaluar métodos de serialización más complejos como XML o Protocol Buffers.

¡Espero que estas recomendaciones del mundo real te ayuden a aplicar la versatilidad y el poder de JSON a tus proyectos! Déjame saber si tienes alguna otra pregunta.

Related Posts