Converter TSV para JSON

Aqui você converte TSV para JSON de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Sem perdas Nada é descartado. O JSON guarda exatamente o que o TSV guardava.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

Por que o arquivo que te entregaram é separado por tabulação

Ferramentas recorrem à tabulação quando os dados estão cheios de vírgula e ninguém quer lidar com aspas. Cliente de banco de dados imprime resultado de consulta com tabulação. Navegador de genoma e tabela de expressão gênica usam por convenção. Plataforma de anúncio e console de análise exportam assim porque nome de campanha e título de página estão cheios de pontuação.

Essa escolha compra confiabilidade contra vírgula e abre mão de quase tudo o mais. O arquivo não tem tipo, não tem aninhamento, não tem jeito de marcar uma coluna como identificador, e nenhuma defesa contra uma tabulação aparecendo dentro de um valor. É um bom formato de transporte e uma coisa pobre para computar em cima, motivo pelo qual a primeira coisa que qualquer um faz com um é converter.

O array de objetos que um TSV vira

A linha de cabeçalho fornece as chaves, e toda linha seguinte vira um objeto. O resultado é um array JSON — a forma que um script, um notebook e quase toda biblioteca presumem quando dizem "os dados".

Nada é embrulhado em torno disso e nada é indexado por uma coluna de ID, porque fazer qualquer um dos dois exige saber qual coluna é o identificador, e essa não é uma decisão que um conversor pode tomar por você. Um array presume o mínimo, e transformar isso numa busca indexada por qualquer campo é uma linha na linguagem que você já está escrevendo.

Tabulação e quebra de linha dentro de um valor deixam de ser perigosas

Um arquivo separado por tabulação não tem escape aceito para uma tabulação dentro de um campo, e uma quebra de linha dentro de um é pior: a linha termina onde o valor deveria continuar. Os dois acontecem na prática, geralmente numa coluna de observação ou anotação onde alguém colou texto.

No JSON são caracteres comuns. Uma tabulação é escrita como `\t` dentro da string e uma quebra de linha como `\n`, e nenhum dos dois consegue afetar a estrutura do documento, porque a estrutura é expressa por chaves e colchetes, não pelos caracteres nos dados. Este é o motivo mais forte para converter um arquivo separado por tabulação bagunçado em vez de continuar processando como texto.

Cabeçalhos de coluna viram chaves JSON exatamente como escritos

Um cabeçalho `Símbolo do gene` vira a chave `Símbolo do gene`, espaços e tudo. Nada é renomeado ou convertido para outro estilo, porque um conversor que reescrevesse silenciosamente seus nomes de coluna tornaria a saída impossível de reconciliar com a origem.

Isso tem consequência onde você usa. Uma chave com espaço não é válida na maioria das linguagens sem colchetes e aspas. Se o JSON vai entrar num código que será mantido, renomear as chaves uma vez — no cabeçalho antes de converter, ou numa única passagem depois — vale fazer deliberadamente. Duas colunas compartilhando um cabeçalho é o caso a observar: chaves de objeto são únicas, então a última vence e a anterior se perde sem aviso.

A inferência dá tipo de verdade, e tira seu identificador

JSON distingue 7 de "7" e um arquivo separado por tabulação não, então o interpretador infere. Número vira número, verdadeiro e falso viram booleano, e o resto continua string. Para quantidade, contagem e preço isso está exatamente certo.

Para identificador é destruição. Um valor `00123` vira `123`, um código de peça escrito em notação parecida com científica vira o número que ele se parece, e uma vez que o JSON guarda um número não sobra nada para recuperar o texto original. A regra prática é se somar dois valores da coluna significaria alguma coisa; se não significasse, a coluna é um identificador e deveria continuar string. Confira essas colunas na saída antes de construir qualquer coisa em cima.

Descobrindo o que realmente está na tabela com jq

A conversão frequentemente é o primeiro passo para ler um arquivo que ninguém documentou, e JSON torna isso rápido. Um comando `jq` dá a contagem de linhas sem o cabeçalho confundir, lista as colunas como o interpretador as viu, e mostra todo valor distinto numa coluna, o que é como você encontra o valor-sentinela que estava arruinando silenciosamente um campo numérico.

Isso vale fazer em qualquer coluna que você esperava ser numérica e que voltou como string. O motivo quase sempre é um punhado de linhas carregando algo como "NA" ou um traço, e saber qual marcador a origem usou é mais útil do que qualquer quantidade de chute sobre o esquema.

Campos vazios viram nulo em vez de string vazia

Um espaço entre duas tabulações é escrito como `null`. Vale dizer isso claramente, porque qualquer coisa consumindo o JSON vai tratar `null` e string vazia de forma diferente: um esquema declarando tipo string vai recusar `null`.

A origem não consegue te dizer qual era a intenção. Um arquivo delimitado tem um jeito só de escrever "nada aqui" e usa isso tanto para um valor em branco quanto para um campo que não se aplica. Se essa distinção importa, ela precisa existir no arquivo antes da conversão, e nenhum conversor consegue inventá-la depois.

Linhas irregulares e colunas que só aparecem no meio do caminho

As chaves vêm da linha de cabeçalho e toda linha posterior é comparada contra ela, então uma tabela onde uma coluna extra começa a aparecer depois de dez mil linhas não ganha uma chave para ela. Os valores excedentes ficam juntos numa chave especial, como um array, exatamente nos registros que os carregam. Linhas faltando um campo simplesmente não carregam essa chave.

Isso é mais comum do que deveria em exportações montadas de várias execuções, e é a falha que um leitor posicional lida pior — um divisor ingênuo desloca todo valor depois da coluna faltante e produz linhas que parecem certas e não estão. Ter o arquivo como objetos torna a inconsistência visível.

Quanto maior o JSON fica que a tabela

Espere o arquivo crescer. Todo registro repete toda chave, toda string fica entre aspas, e a pontuação de um objeto é acrescentada ao redor dos valores. Numa tabela larga com cabeçalhos longos e valores curtos, o JSON pode ficar várias vezes o tamanho da fonte separada por tabulação.

É um preço justo para um arquivo em que você vai computar em cima e pobre para um arquivo que você só precisa guardar. A saída também é formatada com indentação, o que a torna legível num editor e acrescenta mais bytes. Se o destino é armazenamento ou um fluxo em vez de um script, NDJSON ou Parquet é o destino melhor.

Onde a conversão roda, e o que a limita

A interpretação e a serialização são JavaScript comum carregado por esta página, então nada é enviado, não existe fila nem conta. Isso importa para o tipo de arquivo que costuma ser este: uma tabela de referência sob embargo, um extrato de cliente, um conjunto de resultado não publicado.

O array é montado por completo antes de ser escrito, então a memória é o teto. Dezenas de megabytes é rotina e centenas é onde uma aba começa a sofrer — e nesse tamanho um único array JSON já é uma coisa estranha de trabalhar de qualquer forma, já que a maioria dos interpretadores insiste em guardar tudo. NDJSON é a forma que escala além desse ponto, e converte da mesma fonte.

Como converter TSV para JSON

  1. Solte o seu arquivo TSV nesta página, ou clique para escolher um.
  2. Escolha JSON como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo JSON pronto.

TSV ou JSON: o que muda

TSV comparado com JSON
TSVJSON
Nome completoTab-Separated ValuesJavaScript Object Notation
Extensão do arquivo.tsv, .tab.json
Tipo de mídiatext/tab-separated-valuesapplication/json
Publicado pela primeira vez19932001
EspecificaçãoIANA text/tab-separated-valuesRFC 8259
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorTodos os navegadores
Considerado no lugarCSVXML, YAML, NDJSON

O que se mantém

Nada é descartado. TSV e JSON guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.

Abrir o resultado

JSON abre em qualquer navegador atual. TSV alcança ainda menos navegadores. Se o arquivo vai para uma página web ou um formulário, esse costuma ser todo o motivo da conversão.

Os programas de sempre não se cruzam: TSV abre em Microsoft Excel, LibreOffice Calc e pandas, e JSON em Visual Studio Code, jq e Postman, então quem receber o resultado precisa de algum do segundo grupo.

Para que serve cada formato

TSV foi publicado em 1993. Está descrito em IANA text/tab-separated-values, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

JSON e de 2001, descrito em RFC 8259. Visual Studio Code, jq e Postman leem o formato.

De TSV para JSON: perguntas frequentes

Meu arquivo TSV é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter TSV para JSON é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter TSV para JSON?

Não. JSON guarda o mesmo conteúdo sem jogar nada fora: o resultado é idêntico em qualidade ao original.

A conversão de TSV para JSON é sem perda?

Nada é descartado. TSV e JSON guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.

Mais sobre esses formatos