¿Qué es JSONL? Guía completa del formato JSON Lines

Todo lo que necesitas saber sobre JSON Lines: sintaxis, ejemplos, casos de uso y mejores prácticas.

Última actualización: febrero 2026

¿Qué es JSONL?

JSONL (JSON Lines), también conocido como Newline Delimited JSON (NDJSON), es un formato de datos basado en texto donde cada línea es un valor JSON válido, separado por caracteres de nueva línea. A diferencia del JSON estándar, que envuelve los datos en un solo array u objeto, JSONL almacena un registro por línea.

Este diseño simple hace que JSONL sea ideal para streaming, registro de eventos y procesamiento de grandes conjuntos de datos: cada línea puede leerse, analizarse y procesarse de forma independiente sin cargar el archivo completo en memoria.

El formato fue popularizado por herramientas y plataformas que manejan grandes volúmenes de datos, incluyendo OpenAI (para conjuntos de datos de ajuste fino), BigQuery, Apache Spark y sistemas de gestión de registros.

Reglas de sintaxis de JSONL

El formato JSONL sigue unas pocas reglas simples:

  • Cada línea debe ser un valor JSON válido (objeto, array, cadena, número, booleano o null)
  • Las líneas están separadas por caracteres de nueva línea (\n)
  • Sin comas ni separadores entre líneas
  • Los archivos deben usar codificación UTF-8
  • La nueva línea final al final del archivo es opcional
  • Las líneas vacías son ignoradas por la mayoría de los analizadores
Archivo JSONL válido
{"name":"Alice","age":30,"city":"New York"}
{"name":"Bob","age":25,"city":"London"}
{"name":"Charlie","age":35,"city":"Tokyo"}

Nota: Cada línea es un objeto JSON completo e independiente. No hay comas entre líneas ni array envolvente.

Ejemplos de JSONL

Objetos simples
{"id":1,"name":"Alice","email":"alice@example.com"}
{"id":2,"name":"Bob","email":"bob@example.com"}
{"id":3,"name":"Charlie","email":"charlie@example.com"}
Objetos anidados
{"user":{"name":"Alice","age":30},"scores":[95,87,92]}
{"user":{"name":"Bob","age":25},"scores":[88,91,76]}

Las líneas de JSONL no necesitan ser del mismo tipo; cada línea solo necesita ser JSON válido:

Tipos mixtos
{"event":"login","user":"alice","timestamp":"2026-01-15T10:30:00Z"}
{"event":"purchase","user":"alice","amount":29.99,"items":["book","pen"]}
{"event":"logout","user":"alice","timestamp":"2026-01-15T11:45:00Z"}

Uno de los usos más populares de JSONL es para conjuntos de datos de ajuste fino de OpenAI:

PopularFormato de ajuste fino de OpenAI
{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is JSONL?"},{"role":"assistant","content":"JSONL is a text format where each line is a valid JSON value."}]}
{"messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"How do I read a JSONL file?"},{"role":"assistant","content":"Read the file line by line, parsing each line as JSON."}]}

Cómo leer archivos JSONL

Los archivos JSONL pueden leerse con cualquier herramienta que soporte procesamiento de texto línea por línea. Estos son los métodos más comunes:

Usa herramientas estándar de Unix para inspeccionar archivos JSONL:

Línea de comandos
# View first 5 lines
head -n 5 data.jsonl
# Count total lines (records)
wc -l data.jsonl
# Pretty-print each line with jq
cat data.jsonl | jq .
# Filter by field value
cat data.jsonl | jq 'select(.age > 30)'

El módulo json integrado de Python maneja JSONL de forma natural:

Python
import json
with open('data.jsonl', 'r') as f:
for line in f:
record = json.loads(line)
print(record['name'])

Lee archivos JSONL línea por línea en Node.js:

JavaScript / Node.js
import { createReadStream } from 'fs';
import { createInterface } from 'readline';
const rl = createInterface({
input: createReadStream('data.jsonl')
});
for await (const line of rl) {
const record = JSON.parse(line);
console.log(record.name);
}

Visor de JSONL en línea

Para un enfoque visual, usa jsonl.co para abrir y explorar archivos JSONL de hasta 1 GB, sin subidas, todo se ejecuta en tu navegador.

Cómo crear archivos JSONL

Crear archivos JSONL es sencillo: solo escribe un valor JSON por línea.

Python
import json
records = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35},
]
with open('output.jsonl', 'w') as f:
for record in records:
f.write(json.dumps(record) + '\n')
JavaScript / Node.js
import { writeFileSync } from 'fs';
const records = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 },
{ name: 'Charlie', age: 35 },
];
const jsonl = records
.map(r => JSON.stringify(r))
.join('\n');
writeFileSync('output.jsonl', jsonl + '\n');

¿Se pueden agregar comentarios en JSONL?

No. La especificación de JSONL no soporta comentarios. Cada línea en un archivo JSONL debe ser un valor JSON válido, y JSON en sí no tiene sintaxis de comentarios.

Si necesitas incluir metadatos o anotaciones junto con tus datos, las soluciones comunes incluyen:

  • 1Agregar un campo de metadatos a tus objetos JSON: '{'"_comment": "datos de prueba", "name": "Alice"'}'
  • 2Usar un archivo de metadatos separado junto a tu archivo JSONL
  • 3Agregar metadatos como la primera línea del archivo: '{'"_meta": '{'"version": "1.0", "created": "2026-01-15"'}''}'

Ten en cuenta que cualquier campo de "comentario" será analizado como datos regulares. Las aplicaciones que consuman el archivo JSONL deben estar diseñadas para ignorar los campos de metadatos.

JSONL vs JSON

La diferencia clave es la estructura. JSON envuelve todo en un solo valor, mientras que JSONL almacena un valor por línea.

JSONJSON estándar
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
JSONLJSONL (JSON Lines)
{"name":"Alice","age":30}
{"name":"Bob","age":25}
  • JSON debe cargarse completamente en memoria para analizarse; JSONL puede leerse línea por línea
  • JSON necesita comas entre elementos; JSONL usa nuevas líneas
  • JSON es mejor para archivos de configuración y APIs; JSONL es mejor para grandes conjuntos de datos y streaming
  • Agregar datos a JSON requiere reescribir el archivo completo; JSONL simplemente añade una nueva línea

Para una comparación detallada, consulta nuestra guía completa JSON vs JSONL guide.

Casos de uso comunes

Aprendizaje automático e IA

Más popular

JSONL es el formato estándar para datos de entrenamiento de ML. OpenAI, Hugging Face y otras plataformas de IA usan JSONL para conjuntos de datos de ajuste fino porque cada ejemplo de entrenamiento es una línea independiente que puede mezclarse, muestrearse y transmitirse de manera eficiente.

Archivos de registro y flujos de eventos

JSONL

Los sistemas de registro estructurado (ELK stack, Datadog, CloudWatch) generan registros en formato JSONL. Cada entrada de registro es una línea JSON, lo que facilita agregar nuevas entradas y procesar registros en tiempo real.

Procesamiento de Big Data

JSONL

Herramientas como Apache Spark, BigQuery y AWS Athena soportan JSONL de forma nativa. El formato línea por línea permite el procesamiento paralelo en sistemas distribuidos: cada trabajador puede procesar un bloque de líneas de forma independiente.

APIs de streaming

JSONL

Las APIs que devuelven grandes conjuntos de resultados a menudo usan streaming JSONL. El cliente puede comenzar a procesar los resultados inmediatamente a medida que llegan, sin esperar la respuesta completa.

Extensiones de archivo JSONL

Los archivos JSONL comúnmente usan estas extensiones:

.jsonlLa extensión JSONL estándar, la más ampliamente utilizada
.ndjsonNewline Delimited JSON: técnicamente el mismo formato con un nombre diferente
.jsonAlgunas herramientas generan JSONL con extensión .json, lo que puede causar confusión

Las tres extensiones contienen el mismo formato: un valor JSON por línea. El tipo MIME para JSONL es application/jsonl o application/x-ndjson.

Prueba nuestras herramientas JSONL gratuitas

Valida tu sintaxis JSONL, convierte entre formatos y visualiza archivos — todo en tu navegador.

Prueba nuestro visor de JSONL

Abre, visualiza y edita archivos JSONL de hasta 1 GB directamente en tu navegador. Sin subidas, 100% privado.

Preguntas frecuentes

¿Qué es JSONL? Guía del formato JSON Lines, ejemplos y ca...