CodeGym /Cursos /JAVA 25 SELF /Fundamentos de JSON: estructura, sintaxis y ventajas

Fundamentos de JSON: estructura, sintaxis y ventajas

JAVA 25 SELF
Nivel 46 , Lección 0
Disponible

1. ¿Qué es JSON (JavaScript Object Notation)?

JSON (se pronuncia «yéison», ¡no «jé-son»!) se corresponde con JavaScript Object Notation. A pesar de la palabra «JavaScript» en el nombre, JSON es un formato universal, compatible con prácticamente todos los lenguajes de programación, incluido Java.

JSON fue ideado por Douglas Crockford a principios de los 2000 como una forma sencilla de intercambiar datos entre el navegador y el servidor. Antes de él predominaba XML — verboso y sobrecargado de etiquetas.

JSON resultó ser más compacto, más simple y fácil de leer a simple vista. Rápidamente se convirtió en el estándar de facto para el intercambio de datos entre cliente y servidor, especialmente en la web y en aplicaciones móviles.

¿Por qué JSON se convirtió en el estándar?

  • Simplicidad de la sintaxis — fácil de escribir y leer a mano.
  • Compacidad — sin etiquetas ni «relleno» innecesarios.
  • Legibilidad — incluso alguien no técnico puede entender lo que ocurre.
  • Facilidad de parseo — la mayoría de los lenguajes tienen bibliotecas integradas o de terceros.
  • Interoperabilidad entre lenguajes — Java, Python, Kotlin, etc.; todos soportan JSON.
  • Estándar para REST API — la inmensa mayoría de los API devuelven JSON.

Comparación con XML

JSON XML
Legibilidad Muy alta Media (muchas etiquetas)
Tamaño Compacto Más voluminoso
Parseo Sencillo Requiere más esfuerzo
Extensibilidad Admite anidamiento Admite anidamiento
Rigor Menos formal Permite describir esquemas
Popularidad (2020+) Muy alta Se usa, pero con menor frecuencia

JSON gana casi en todos los puntos. No obstante, XML sigue siendo relevante donde hacen falta esquemas complejos, tipado estricto, validación con XSD y soporte de comentarios y atributos — por ejemplo, en sistemas heredados y software bancario.

En la práctica, si no escribes software para un banco o una nave espacial, utiliza JSON.

2. Sintaxis básica de JSON

Si has trabajado con objetos de JavaScript o con diccionarios en otros lenguajes, la sintaxis te resultará familiar. En Java no existe un «diccionario» directo; su papel lo desempeñan las colecciones de java.util, principalmente Map<K, V> (muy a menudo — HashMap<K, V>).

Elementos principales

  • Objetos — conjunto de pares «clave: valor», envueltos en { }.
  • Arrays — listas ordenadas de valores, envueltas en [ ].

Ejemplo de objeto:

{
  "name": "Alice",
  "age": 25
}

Ejemplo de array:

[1, 2, 3, 4, 5]

Ejemplo de objeto con array:

{
  "students": [
    "Ivan",
    "Maria",
    "John"
  ]
}

Tipos de valores permitidos

En JSON solo se pueden utilizar los siguientes tipos de datos:

Tipo Ejemplo Descripción
Cadena
"hello"
Siempre entre comillas dobles
Número
123, 3.14, -7
Enteros y decimales
Booleano
true, false
Valores lógicos
null
null
«Vacío», ausencia de valor
Objeto
{ ... }
Conjunto de pares «clave: valor»
Array
[ ... ]
Lista de valores

Atención: las claves en los objetos son siempre cadenas entre comillas dobles, por ejemplo "name". No se permiten comillas simples.

Ejemplos de JSON válido

{
  "id": 1,
  "name": "Bob",
  "active": true,
  "scores": [10, 20, 30],
  "profile": {
    "email": "bob@example.com",
    "phone": null
  }
}

Ejemplo de JSON no válido (errores)

{
  name: 'Bob', // Error: las claves y las cadenas deben ir entre comillas dobles
  age: 25,
}

3. Estructura de datos: anidamiento de objetos y arrays

JSON admite anidamiento profundo: objetos en objetos, arrays en objetos, objetos en arrays, etc. Es como una matrioska.

Ejemplo de documento JSON complejo

{
  "university": "Java University",
  "students": [
    {
      "name": "Ivan",
      "age": 20,
      "courses": ["Math", "Java", "English"]
    },
    {
      "name": "Maria",
      "age": 19,
      "courses": ["Biology", "Java", "Art"]
    }
  ],
  "active": true
}

En el objeto raíz hay un campo de tipo cadena "university", un campo booleano "active" y un array "students", en el que hay objetos de estudiantes.

Esquema visual (diagrama de bloques)

{
  "clave": valor,
  "array": [
    { "clave": valor },
    { "clave": valor }
  ],
  "objeto": {
    "clave": valor
  }
}

4. Ventajas de JSON

¿Por qué JSON es tan popular?

  1. Fácil de leer por humanos y máquinas — la estructura se entiende fácilmente.
  2. Compacidad — mínimo de símbolos innecesarios.
  3. Simplicidad de parseo — multitud de bibliotecas para lectura/escritura.
  4. Estándar para REST API y aplicaciones móviles — se usa en todas partes.
  5. Flexibilidad — describe tanto listas simples como estructuras en árbol.
  6. Configuraciones y almacenamiento de datos — se usa a menudo en archivos de configuración.
  7. Compatibilidad en todos los lenguajes — Java, Python, Go, Rust y otros.

5. Práctica: análisis de ejemplos de archivos JSON

Ejemplo 1: lista de usuarios

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  }
]

Es un array en el que cada elemento es un objeto de usuario.

Ejemplo 2: configuración de una aplicación

{
  "debug": true,
  "maxConnections": 100,
  "database": {
    "host": "localhost",
    "port": 5432,
    "user": "admin",
    "password": "qwerty"
  }
}

Un objeto con el objeto anidado "database". Muy parecido a ajustes reales de aplicaciones.

Ejemplo 3: errores en JSON

{
  "name": "Alice",
  "age": 25,
} // Error: ¡coma sobrante antes de la llave de cierre!

Recuerda: en JSON no se puede poner una coma después del último elemento.

Ejemplo 4: claves sin comillas

{ name: "Alice", age: 25 } // Error: las claves deben ir entre comillas dobles

6. Matices útiles

Tabla: lo que se puede y lo que no se puede en JSON

Se permite No se permite
"clave": "valor"
'clave': 'valor'
"clave": 123
"clave": 0123
"clave": null
"clave": undefined
"clave": true
"clave": True
"clave": [1, 2, 3]
"clave": [1, 2, 3,]

Comparación breve entre JSON y objetos de Java

Java JSON
int, double, boolean
Número, true/false
String
"cadena"
List<T>, array [valor1, valor2, ...]
Map<String, Object>
{ "clave": valor, ... }
null
null
Clase con campos { "campo": valor, ... }

Ejemplo: clase Java y su representación JSON

public class Student {
    public String name;
    public int age;
}
{
  "name": "Alice",
  "age": 20
}

7. Errores típicos al trabajar con JSON

Error n.º 1: comillas simples en lugar de dobles. JSON solo acepta comillas dobles para claves y cadenas.

{ 'name': 'Alice' } // ¡Error!

Error n.º 2: coma sobrante. No se puede poner coma después del último elemento.

{ "name": "Alice", } // ¡Error!

Error n.º 3: claves sin comillas. Las claves siempre deben ir entre comillas dobles.

{ name: "Alice" } // ¡Error!

Error n.º 4: números con ceros a la izquierda. Esos números no son válidos.

{ "age": 025 } // ¡Error!

Error n.º 5: uso de undefined. En JSON no existe undefined; utiliza null.

{ "value": undefined } // ¡Error!

Error n.º 6: True/False con mayúscula. En JSON solo existen true y false (en minúsculas).

{ "active": True } // ¡Error!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION