¿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
{"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
{"id":1,"name":"Alice","email":"alice@example.com"}{"id":2,"name":"Bob","email":"bob@example.com"}{"id":3,"name":"Charlie","email":"charlie@example.com"}
{"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:
{"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:
{"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:
# View first 5 lineshead -n 5 data.jsonl# Count total lines (records)wc -l data.jsonl# Pretty-print each line with jqcat data.jsonl | jq .# Filter by field valuecat data.jsonl | jq 'select(.age > 30)'
El módulo json integrado de Python maneja JSONL de forma natural:
import jsonwith 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:
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);}
Cómo crear archivos JSONL
Crear archivos JSONL es sencillo: solo escribe un valor JSON por línea.
import jsonrecords = [{"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')
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.
[{"name": "Alice", "age": 30},{"name": "Bob", "age": 25}]
{"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 popularJSONL 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
JSONLLos 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
JSONLHerramientas 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
JSONLLas 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:
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.