Conversor JSON Lines (JSONL) ⇔ Array JSON

Convierte entre el formato JSON Lines (un objeto JSON por línea) y un array JSON estándar. Útil para revisar conjuntos de datos de machine learning y salidas de registros.

Qué es JSON Lines (JSONL)

JSON Lines es un formato en el que cada línea contiene un objeto JSON. El archivo en su conjunto no es JSON, lo que significa que no hay comas finales que gestionar y que añadir registros se reduce a añadir líneas. Se usa mucho allí donde los datos fluyen de uno en uno: registros de aplicación, conjuntos de entrenamiento para aprendizaje automático y cargas masivas en BigQuery o Elasticsearch. Las extensiones habituales son `.jsonl` y `.ndjson`.

Esta herramienta convierte entre JSON Lines y un array JSON en ambos sentidos. Al pasar de JSONL a array se omiten las líneas en blanco y se informa de cualquier línea que no sea JSON válido. En sentido contrario, la entrada debe tener un array en el nivel superior o la conversión falla. Todo se ejecuta en su navegador, de modo que los registros y los datos de entrenamiento que prefiere no enviar a ninguna parte permanecen en su equipo.

Cómo convertir entre JSONL y un array JSON

  1. Elija el sentido De JSONL a array JSON, o de array JSON a JSONL.
  2. Pegue los datos Para JSONL, un objeto por línea. Para un array, pegue el texto que empieza por `[` tal cual.
  3. Si aparece un error, revise esa línea El mensaje indica qué línea no pudo analizarse. Una coma final o una comilla sin cerrar son las causas habituales.
  4. Copie el resultado Guarde la salida en un archivo o entréguela directamente al siguiente paso de su proceso.

Consejos para aprovecharla mejor

  • JSON Lines (JSONL) es un formato que coloca un objeto JSON independiente por línea, utilizado habitualmente en los conjuntos de datos de fine-tuning de OpenAI y en la salida de registros de herramientas como Elasticsearch/Logstash.
  • En el modo "JSONL → Array JSON", cada línea debe ser un objeto JSON que se pueda analizar por separado. Las líneas en blanco se omiten automáticamente.
  • En el modo "Array JSON → JSONL", toda la entrada debe ser un único array JSON (`[ ... ]`). Cada elemento del array se genera como una línea de JSONL.
  • Al convertir un archivo de registro grande de JSONL a un array JSON, resulta más fácil trabajar con él usando el comando `jq` o el analizador de arrays JSON estándar de tu lenguaje de programación.

Dónde ayuda esta conversión

Entregar registros a una herramienta de análisis

Los registros de aplicación escritos de uno por línea pasan a ser utilizables por herramientas y bibliotecas orientadas a arrays una vez reunidos en un array JSON.

Preparar datos de aprendizaje automático

Los conjuntos de entrenamiento suelen distribuirse como JSONL mientras que los guiones de preprocesado esperan un array. Esto tiende el puente entre ambos.

Cargar en BigQuery o Elasticsearch

Ambos aceptan JSON delimitado por saltos de línea como formato de entrada, así que un array que ya tenga puede convertirse en algo que ingieran.

Hacer que un JSON grande pueda tratarse línea a línea

Un array debe leerse entero antes de empezar a procesar; como JSONL puede tratarse de una línea cada vez.

Términos de JSON Lines

JSON Lines (JSONL)
Un formato con un valor JSON por línea. **El archivo en su conjunto no es JSON válido**, porque varios valores quedan uno junto a otro. Su ventaja es que cada línea puede leerse de forma independiente.
NDJSON
Abreviatura de Newline Delimited JSON, esencialmente lo mismo que JSON Lines. De ahí procede la extensión `.ndjson`.
Procesamiento en flujo
Tratar los datos desde el principio según van llegando, sin cargarlos por completo antes. JSONL encaja con este enfoque, y por eso ambos suelen ir de la mano.
Nivel superior
El valor más externo de un documento JSON. Convertir a JSONL exige un array `[...]` aquí; un objeto `{...}` no puede convertirse.
Líneas en blanco
En JSONL las líneas en blanco no significan nada. Esta herramienta las omite, así que un salto de línea suelto al final de un archivo no rompe la conversión.

Preguntas frecuentes

Un array JSON envuelve todo en un único array, como `[ {...}, {...} ]`, por lo que no se puede acceder a un elemento individual sin analizar el conjunto completo. JSON Lines, en cambio, coloca un objeto JSON independiente por línea, lo que permite procesarlo línea a línea en modo streaming, ideal para procesar de forma secuencial archivos de registro enormes o conjuntos de datos de machine learning.

Es el formato estándar de los conjuntos de datos de fine-tuning en OpenAI y otras plataformas de machine learning, el formato de salida de herramientas de recolección de registros como Elasticsearch y Logstash, y el procesamiento en streaming de grandes volúmenes de datos: cualquier caso en el que se necesite leer y escribir registros de forma independiente, uno a uno.

En el modo "JSONL → Array JSON", cada línea debe ser JSON válido por sí sola; si aunque sea una línea tiene un error de sintaxis, se muestra un mensaje de error indicando ese número de línea. En el modo "Array JSON → JSONL", toda la entrada debe ser un array (que empiece por `[` y termine por `]`).

El resultado convertido a un array JSON se puede usar directamente con el comando `jq` o con el analizador JSON estándar de tu lenguaje de programación. Por el contrario, el resultado convertido a JSONL combina muy bien con `jq -c`, `grep`, `awk` y otras herramientas orientadas a líneas, lo que facilita su integración en un pipeline de análisis de registros.
Tool-kun

A propósito — Por qué nació el formato de "un registro por línea"

El formato JSON Lines (también llamado JSONL) surgió porque un array JSON estándar tiene una limitación fundamental: no se puede obtener ni un solo registro hasta que todo el array se ha cargado en memoria y analizado por completo. Intentar tratar como un único array JSON datos de registro o conjuntos de entrenamiento de machine learning de varios millones de líneas obligaba a cargar el archivo entero en memoria, lo que provocaba problemas de falta de memoria y tiempos de análisis desmesurados en archivos muy grandes.

JSON Lines resuelve este problema con una regla sencilla: una línea equivale a un objeto JSON completo. Como el archivo se puede leer y analizar línea a línea a medida que avanza, no hace falta cargarlo entero en memoria, lo que lo hace muy adecuado para el procesamiento en streaming y en paralelo. Esta filosofía de diseño también encaja bien con la tradición Unix de tratar el texto "un registro por línea" (comandos como `grep`, `awk` y `sed` operan línea a línea), lo que supone una gran ventaja práctica al poder integrarse directamente en las herramientas de línea de comandos ya existentes.

Hoy en día se ha adoptado ampliamente como formato de distribución de conjuntos de datos en el ámbito de la IA y el machine learning, y es habitual que los datos de entrenamiento de grandes modelos de lenguaje y los pares de prompt/respuesta para fine-tuning se distribuyan en formato JSON Lines.