100 % local: tus datos nunca salen de tu navegador

NDJSON a JSON — un solo array para jq

Convierte JSON delimitado por saltos de línea en un único array. Las líneas vacías se omiten y una línea rota se señala por su número: sabes dónde mirar.

Instantáneo Privado Cero cookies
Indentación
Invertir: JSON → NDJSON

Entrada NDJSON

Salida JSON

Qué hace esta herramienta

Entra JSON delimitado por saltos de línea, sale un arreglo.

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

Ese es todo el formato: un valor JSON por línea, sin comas entre ellos, sin corchetes alrededor. Es lo que escriben las canalizaciones de registros, lo que esperan bq load y muchas API de flujo, y lo que produce jq -c.

La línea mala se nombra

{"a": 1}

{oops}
Invalid JSON on line 3

La línea vacía se salta sin decir nada —un archivo NDJSON suele terminar con una—. La línea mal formada detiene la conversión, y el mensaje lleva su número, así que vas directo a ella. No recibes un arreglo parcial: la mitad de los registros sin nada que lo diga es peor que un error.

Los números largos conservan sus cifras

{"id": 12345678901234567890}
[
  {
    "id": 12345678901234567890
  }
]

Pasados unos dieciséis dígitos, un número de JavaScript deja de ser exacto: lee ese identificador como número y recuperas otro, en silencio. Aquí tanto la lectura como la escritura guardan el literal tal como estaba escrito, y por eso un archivo de identificadores de Twitter o Discord sobrevive al viaje.

Lo que no hace

  • Reordenar ni quitar duplicados. El arreglo guarda las líneas en el orden en que llegaron, repeticiones incluidas.
  • Exigir objetos. Una línea puede ser cualquier valor JSON: 1, "x" y null son registros válidos y pasan como tales.
  • Partir una línea. Dos valores en una línea son un error, no dos registros.

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

¿Qué pasa si una línea está mal formada?
La conversión se detiene y te dice cuál: `Invalid JSON on line 3`. No se devuelve nada parcial —medio arreglo parecería un resultado y te llevarías los registros que faltan a lo que venga después—. Corrige la línea y vuelve a convertir.
¿Sobreviven los identificadores numéricos largos?
Sí, cifra por cifra. Un identificador de 19 dígitos pasa de lo que un número de JavaScript guarda exacto, y un conversor que lo leyera como número te devolvería el valor vecino sin avisar. Aquí la lectura y la escritura conservan el literal, así que `12345678901234567890` sale tal cual.
¿Qué cuenta exactamente como línea?
Un valor JSON entero. Las líneas vacías se saltan, los finales `\r\n` no molestan y una marca de orden de bytes al principio tampoco. Dos objetos en la misma línea, en cambio, no son dos registros: esa línea se marca como inválida, porque NDJSON pone un valor por línea y adivinar dónde cortar sería inventar datos.

Convertidores relacionados