Convertir TSV a JSON

Aquí puedes convertir TSV a JSON gratis y sin cuenta: suelta el archivo arriba y en un par de segundos tienes el resultado listo para descargar. La conversión ocurre en tu propio navegador, así que el archivo no se sube nunca. Funciona igual en Windows, macOS y Linux que en iPhone y Android, y sigue funcionando aunque cortes la conexión.

  • Dónde se ejecuta En tu navegador. El archivo no se sube.
  • Sin pérdida No se pierde nada. JSON contiene exactamente lo que contenía TSV.
  • Límite de tamaño Hasta 100 MB por archivo, gratis y sin cuenta.

Hasta 100 archivos a la vez. Mezclar formatos no es problema.

Por qué el fichero que te han dado usa tabuladores

Las herramientas eligen el tabulador cuando sus datos están llenos de comas y no quieren entrecomillar. Los clientes de base de datos imprimen los resultados así. Los ficheros de anotación de secuencias y las tablas de expresión génica lo usan por convención. Las consolas de analítica y las plataformas de publicidad lo exportan así porque los nombres de campaña y los títulos de página están llenos de signos de puntuación.

Esa elección compra fiabilidad frente a la coma y renuncia a casi todo lo demás. El fichero no tiene tipos, no tiene anidamiento, no puede marcar una columna como identificador y no tiene ninguna defensa contra un tabulador dentro de un valor. Es un buen formato de transporte y un mal formato para calcular, que es exactamente por lo que lo primero que hace todo el mundo con uno es convertirlo.

La forma que sale: array de objetos, sin envoltorio

La fila de cabecera aporta las claves y cada fila siguiente se convierte en un objeto. El resultado es un array JSON, que es la forma que dan por supuesta un script, un cuaderno de análisis y prácticamente cualquier biblioteca cuando dicen «los datos».

No se envuelve en nada ni se indexa por ninguna columna de identificador, porque para hacerlo habría que saber cuál de las columnas es el identificador y esa no es una decisión que pueda tomar un conversor. Un array es lo que menos supone, y convertirlo en un diccionario por el campo que quieras es una línea en el lenguaje que ya estés escribiendo.

Un tabulador dentro de un valor deja de ser peligroso

Un fichero separado por tabuladores no tiene forma acordada de escapar un tabulador dentro de un campo, y un salto de línea dentro de uno es todavía peor: la fila termina justo donde el valor debía continuar. Las dos cosas pasan en la práctica, casi siempre en una columna de observaciones o de descripción donde alguien pegó algo.

En JSON son caracteres corrientes. El tabulador se escribe como una secuencia de escape dentro de la cadena y el salto de línea igual, y ninguno de los dos puede afectar a la estructura del documento, porque la estructura la expresan las llaves y los corchetes y no los caracteres del dato. Es la razón más sólida para convertir un fichero desordenado antes de seguir procesándolo como texto, y conviene hacerlo antes y no después de que una tubería haya producido una respuesta verosímil y equivocada.

Las cabeceras se convierten en claves tal cual están escritas

Una cabecera que ponga «Importe total» pasa a ser la clave «Importe total», con el espacio incluido, y una que lleve tildes o paréntesis los conserva. Nada se renombra, ni se pasa a minúsculas, ni se transforma, porque un conversor que reescribiera en silencio los nombres de columna haría imposible cuadrar la salida con el origen.

Eso tiene consecuencias donde vayas a usarlo: en la mayoría de los lenguajes tendrás que acceder al campo con corchetes y comillas en vez de con un punto. Si el JSON va a acabar en código que alguien mantendrá, renombrar las claves una vez —en la fila de cabecera, antes de convertir— compensa. Y vigila dos columnas con el mismo encabezado: el analizador no deja que una pise a la otra, así que a la repetida le añade un sufijo numérico —una segunda «Importe» se convierte en la clave «Importe_1»— y las dos sobreviven como campos distintos. No se pierde ningún dato, pero la clave que ves en el JSON ya no es el nombre que había en la hoja, así que arregla la cabecera antes de convertir si el destino es código que da por hecho un nombre concreto.

La inferencia de tipos te da números y te quita códigos

JSON distingue el 7 del «7» y una tabla delimitada no, así que el analizador deduce. Lo que parece número se convierte en número, las palabras true y false en booleanos, y lo demás se queda como cadena. Para cantidades, recuentos y puntuaciones es justo lo que quieres y te ahorra una pasada de conversión al otro lado.

Para identificadores es destrucción. Un código postal escrito 08001 llega al JSON como el número 8001, y una referencia con ceros delante pierde el relleno sin que nada avise. La regla práctica es preguntarse si sumar dos valores de esa columna significaría algo: si no significa nada, la columna era un identificador y quería seguir siendo texto. Revisa esas columnas en la salida antes de construir nada encima.

Un fichero con coma decimal se queda en texto

Este es el caso que aparece constantemente en datos publicados en español y casi nunca en la documentación en inglés. La inferencia reconoce números escritos con punto decimal; un valor escrito 12,5 no encaja en ese molde y se queda tal cual, como cadena.

El resultado es un JSON perfectamente válido en el que una columna que tú considerabas numérica llega entre comillas, y cualquier suma posterior falla o concatena. Compruébalo siempre en las primeras filas de la salida. Si la columna viene con coma decimal, hay que decidir conscientemente si se reemplaza en el origen o se convierte en el destino, pero no conviene descubrirlo por un total absurdo tres pasos más adelante.

Los huecos se escriben como null

Un espacio entre dos tabuladores se escribe como null. Merece la pena decirlo claramente, porque cualquier cosa que consuma el JSON tratará null y cadena vacía de forma distinta: un esquema que declare una cadena rechazará el nulo, y una comprobación de tipos los separará aunque una comprobación de verdad o falsedad no lo haga.

El origen no puede decirte cuál de los dos se quería decir. Un fichero delimitado tiene una sola manera de escribir «aquí no hay nada» y la usa tanto para un valor en blanco como para un campo que no aplica. Si esa distinción importa, tenía que existir en el fichero antes de la conversión, como una marca convenida o como una segunda columna.

Filas desiguales y columnas que aparecen a mitad del fichero

Las claves salen de la cabecera y todas las filas posteriores se cotejan con ella, así que una tabla en la que aparece una columna nueva a partir de la fila diez mil no gana una clave por ello. Los valores sobrantes caen juntos en un campo aparte, como lista, solo en los registros que los traen. Las filas a las que les falta un campo simplemente no llevan esa clave.

Esto es más frecuente de lo que debería en exportaciones montadas a partir de varias ejecuciones, y es el fallo que peor lleva un lector posicional: un troceador ingenuo desplaza todos los valores posteriores a la columna que falta y produce filas que parecen correctas y no lo son. Teniendo los datos como objetos, la irregularidad se ve: basta pedir las claves de unos cuantos registros para comprobar que la forma no es uniforme.

Averiguar qué contiene la tabla con jq

La conversión suele ser el primer paso para leer un fichero que nadie documentó, y en JSON eso se hace deprisa. Contar la longitud del array da el número de filas sin que la cabecera confunda. Pedir las claves del primer elemento enumera las columnas tal y como las vio el analizador. Y sacar los valores distintos de una columna es la forma de encontrar la marca especial que está estropeando en silencio un campo numérico.

Esa última consulta merece la pena en cualquier columna que esperabas numérica y ha llegado como texto. La causa suele ser un puñado de filas con «ND», un guion o una llamada a pie de página, y saber qué marca usó la fuente vale más que cualquier suposición sobre el esquema. También es bastante más rápido que abrir un fichero grande en una hoja de cálculo, que además aplicaría sus propias conversiones al entrar.

El JSON ocupa bastante más que la tabla

Cuenta con que el fichero crezca. Cada registro repite todas las claves, todas las cadenas van entrecomilladas y a los valores se les añade la puntuación del objeto. En una tabla ancha con encabezados largos y valores cortos, el JSON puede ser varias veces el original.

Es un precio justo para un fichero contra el que vas a calcular y malo para uno que solo necesitas guardar. La salida además va con sangría de dos espacios, lo que la hace legible en un editor y suma bytes. Si el destino es almacenamiento o una carga por flujo en lugar de un script, NDJSON o Parquet son mejores objetivos y salen de la misma tabla.

Dónde ocurre la conversión y qué la limita

El análisis y la escritura son JavaScript corriente cargado por esta página, así que no se sube nada, no hay cola y no hay cuenta. Importa por el tipo de fichero que suele ser este: una tabla de referencia todavía embargada, un extracto de clientes, un conjunto de resultados sin publicar.

El array se construye entero antes de escribirse, de modo que el techo es la memoria. Decenas de megabytes son rutina y a partir de cierto punto la pestaña se resiente; a ese tamaño, además, un único array JSON es incómodo de manejar, porque casi todos los analizadores insisten en sostenerlo completo. NDJSON es la forma que escala más allá de ese punto y sale del mismo origen.

Cómo convertir TSV a JSON

  1. Suelta tu archivo TSV en esta página, o haz clic para elegir uno.
  2. Elige JSON como destino. La conversión ocurre en tu navegador y el archivo no se sube.
  3. Descarga el archivo JSON terminado.

TSV frente a JSON: qué cambia

TSV frente a JSON
TSVJSON
Nombre completoTab-Separated ValuesJavaScript Object Notation
Extensión de archivo.tsv, .tab.json
Tipo de mediotext/tab-separated-valuesapplication/json
Publicado por primera vez19932001
EspecificaciónIANA text/tab-separated-valuesRFC 8259
LicenciaEstándar abiertoEstándar abierto
Situación actualVigenteVigente
Se abre en el navegadorNingún navegadorTodos los navegadores
Considerado en su lugarCSVXML, YAML, NDJSON

Qué se conserva

No se descarta nada. TSV y JSON guardan su contenido sin pérdida, así que la conversión cambia el envoltorio y no la calidad, y puede repetirse sin que el daño se acumule.

Abrir el resultado

JSON se abre en cualquier navegador actual. TSV llega a menos navegadores todavía. Si el archivo va a una página web o a un formulario, ese suele ser todo el motivo de la conversión.

Los programas de siempre no coinciden: TSV se abre en Microsoft Excel, LibreOffice Calc y pandas, y JSON en Visual Studio Code, jq y Postman, así que quien reciba el resultado necesita alguno del segundo grupo.

Para qué sirve cada formato

TSV se publicó en 1993. Está recogido en IANA text/tab-separated-values, y conviene conocerlo si el archivo tiene que sobrevivir a la herramienta que lo escribió.

JSON es de 2001, recogido en RFC 8259. Visual Studio Code, jq y Postman lo leen.

De TSV a JSON: preguntas frecuentes

¿Se sube a algún sitio mi archivo TSV?

No. Esta conversión ocurre por completo en tu navegador, así que el archivo no sale de tu dispositivo. Puedes comprobarlo tú: abre la pestaña de red de las herramientas de desarrollo y convierte algo. Verás la propia página y las peticiones de estadística y publicidad con las que se paga este servicio, y ni una sola que lleve tu archivo.

¿Convertir TSV a JSON es gratis?

Sí. Sin cuenta, sin marca de agua y sin cupo diario que se gaste: se ejecuta en tu propio equipo, así que puedes volver tantas veces como quieras. El navegador procesa archivos de hasta 100 MB, 100 a la vez.

¿Se pierde calidad al convertir TSV a JSON?

No. JSON guarda el mismo contenido sin tirar nada: el resultado es idéntico en calidad al original.

¿Es sin pérdida la conversión de TSV a JSON?

No se descarta nada. TSV y JSON guardan su contenido sin pérdida, así que la conversión cambia el envoltorio y no la calidad, y puede repetirse sin que el daño se acumule.

Más sobre estos formatos