100 % local: tus datos nunca salen de tu navegador

JSON a NDJSON — un registro por línea

Convierte un array JSON en JSON delimitado por saltos de línea. Un documento por línea, minificado, listo para bq load o una API de flujo.

Instantáneo Privado Cero cookies
Invertir: NDJSON → JSON

Entrada JSON

Salida NDJSON

Qué hace esta herramienta

Un array JSON pasa a ser un documento JSON por línea.

[
  { "id": 1, "name": "Ada" },
  { "id": 2, "name": "Grace" }
]
{"id":1,"name":"Ada"}
{"id":2,"name":"Grace"}

Cada línea va minificada, y no es una elección estética: un documento indentado ocupa varias líneas, y en NDJSON un salto de línea significa siguiente registro. La indentación y el formato se excluyen.

La raíz tiene que ser un array

El array es la lista de registros. Un objeto en la raíz es un documento único; partirlo en líneas sería decidir que sus claves son registros, una suposición que esta herramienta no hace. La conversión se detiene.

Los elementos, en cambio, son libres: null, 42 y "texto" son documentos JSON válidos y, por tanto, líneas NDJSON válidas. Los registros suelen ser objetos, pero nada aquí lo exige.

Los enteros largos conservan sus cifras

[{ "id": 12345678901234567890 }]

sale con sus veinte cifras. Un conversor que pasa por un número de JavaScript escribe 12345678901234567000 en su lugar, sin decir nada: el valor cambia y el archivo sigue estando perfectamente bien formado.

Este hacía exactamente eso. El defecto se encontró al escribir esta página y se corrigió; ahora el identificador sobrevive a la ida y vuelta por NDJSON.

Un array vacío da un archivo vacío

[] no produce ninguna salida, y esa es la respuesta correcta: NDJSON no tiene otra manera de escribir «cero registros» que un archivo vacío. Eso implica que un resultado vacío y una entrada vacía se parecen, conviene saberlo antes de concluir que no ha pasado nada.

Privado por diseño

Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.

Preguntas frecuentes

¿Por qué la raíz debe ser un array?
Porque NDJSON es una lista de registros y el array es esa lista. Un objeto en la raíz es un documento único, y no hay forma honesta de decidir si es un registro o una colección que hay que partir. Se rechaza en vez de adivinarlo.
¿Qué pasa con un salto de línea dentro de una de mis cadenas?
Se escribe `\n`, como exige JSON, así que se queda dentro de la línea. Aquí importa más que en otros sitios: en NDJSON el salto de línea separa los registros, y uno real en medio de un documento partiría un registro en dos mitades inanalizables.
Mi archivo es un solo array de un millón de filas. ¿Es un problema?
Es el caso para el que existe NDJSON, pero la conversión lee igualmente todo el array en memoria: la entrada es un documento JSON, y un documento debe estar completo para analizarse. A partir de cierto tamaño, una herramienta en flujo como `jq -c ".[]"` es el instrumento adecuado.

Convertidores relacionados