Converter JSON para NDJSON

Aqui você converte JSON para NDJSON 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 NDJSON guarda exatamente o que o JSON 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.

O topo do seu JSON decide como o NDJSON vai ficar

Este é o mecanismo inteiro e vale dizer antes de qualquer outra coisa. Se o documento é um array, cada elemento vira uma linha. Se é qualquer outra coisa — um objeto, uma string, um número — o documento inteiro vira uma linha, porque NDJSON é definido como um valor JSON completo por linha e um objeto único é um valor.

Nenhum dos dois resultados é um erro e o conversor não vai avisar, então a checagem é sua: abra o arquivo e olhe o primeiro caractere. Um colchete produz o arquivo que você queria. Uma chave produz uma linha única e muito longa.

O problema do envelope, onde a maioria perde uma hora

Respostas de API quase nunca são um array puro. São um objeto com uma chave — data, results, items, records — cujo valor é o array. Para as conversões tabulares deste site esse invólucro é removido automaticamente; neste par não é, e a diferença pega as pessoas.

O motivo é que o invólucro é um registro legítimo aqui. NDJSON pode guardar objetos de qualquer forma, então não há como distinguir "um envelope a descartar" de "um registro que por acaso contém uma lista". O conserto é uma edição de dez segundos num editor de texto: apague a chave de abertura, apague a chave de fechamento, salve, converta.

O aninhamento sobrevive, motivo de o NDJSON vencer o CSV para estes dados

Todo outro destino para uma exportação JSON neste site precisa achatar. Um CSV, um TSV, um insert SQL ou uma coluna Parquet não têm onde colocar um objeto dentro de um valor. NDJSON não tem esse problema: cada linha é JSON, então um pedido carregando um cliente aninhado e cinco itens de linha chega completo.

Isso torna esta a conversão a escolher quando a estrutura é o dado. Se o destino consegue ler JSON delimitado por linha — e a maioria dos carregadores de data warehouse, produtores de fila e coletores de log consegue — você ganha as propriedades de streaming e contagem de linha sem pagar em estrutura.

O que a reformatação realmente muda nos bytes

Cada registro é escrito de forma compacta: sem indentação, sem quebras de linha internas, uma linha sem espaço extra por elemento. Se a origem era formatada com recuo, o arquivo fica substancialmente menor mesmo sem nada removido.

A ordem das chaves dentro de cada registro é preservada, e nenhuma chave é adicionada ou removida. Um registro que faltava um campo no array continua faltando esse campo na sua linha — NDJSON não reconcilia registros entre si como os gravadores tabulares fazem.

Um registro não pode mais ser corrompido pelo registro acima

Uma quebra de linha dentro de um valor string é escapada dentro do JSON, não escrita literalmente, então nada nos dados pode produzir uma quebra de linha. É isso que torna a fronteira de linha uma garantia real em vez de convenção: wc -l é a contagem de registros, split -l 50000 produz pedaços válidos.

Também muda o que um arquivo quebrado custa. Um array JSON malformado não entrega nada — a análise falha e você não consegue dizer qual registro foi responsável. Uma linha malformada num arquivo NDJSON custa só essa linha, e o conversor que a lê de volta nomeia o número da linha.

A conversão em si não faz streaming, e não consegue

Há uma ironia neste par que vale ser honesto. O benefício inteiro do NDJSON é que um consumidor nunca precisa segurar o arquivo inteiro, e produzi-lo aqui exige exatamente isso: um array JSON não é válido até que seu colchete de fechamento chegue, então o documento é analisado inteiro antes de a primeira linha poder ser escrita.

O limite prático é, portanto, sua própria memória em vez de um teto de tamanho. Se você mesmo está produzindo os dados, o conserto melhor é fazer a origem emitir NDJSON desde o início.

Quais carregadores aceitam este arquivo como está

Um bom número aceita diretamente: jobs de carga do BigQuery e Snowflake apontados para JSON delimitado por linha, o DuckDB lendo o arquivo numa cláusula FROM, o ClickHouse com seu formato JSONEachRow, e a maioria das rotinas de importação de aplicação que descrevem sua entrada como um objeto por linha.

Um conjunto menor quer um protocolo em vez de registros. Requisições em massa do Elasticsearch e OpenSearch intercalam uma linha de instrução antes de cada documento, então um corpo tem o dobro de linhas de registros.

A viagem de volta ao JSON é exata

Nada nesta conversão é de mão única. Converter o resultado de volta para JSON remonta as linhas num array, e como cada linha já era um valor completo, o array que você recebe é o array com que começou — mesmos registros, mesmo aninhamento, mesma ordem de chave.

Vale saber isso ao decidir o que manter. Se o NDJSON é um artefato de transporte para uma carga só, não há motivo para arquivá-lo.

Quando manter o array em vez disso

Nem todo consumidor se beneficia. Se o destino é um programa que vai ler o arquivo inteiro de uma vez — um fixture de teste, um script de seed, um corpo de requisição, uma importação de configuração — um array JSON é o que ele espera, e NDJSON só acrescenta um passo de remontagem do outro lado.

E se os registros vão ser consultados repetidamente em vez de carregados uma vez, nenhuma das duas formas é ideal. As duas repetem toda chave em todo registro, uma fatia grande de um arquivo real.

Onde a conversão de JSON para NDJSON acontece

Nesta aba do navegador, em JavaScript puro, sem upload e sem conta. O plano gratuito aceita até 100 MB, e além disso a restrição é memória em vez de qualquer política nossa.

O ponto de privacidade é concreto para quem prepara uma carga em massa. Os arquivos convertidos para ingestão são logs de evento, históricos de pedido, registros de usuário e trilhas de auditoria, e entregar um a um serviço web para remover colchetes seria uma troca e tanto. Nada é enviado a lugar nenhum aqui.

Como converter JSON para NDJSON

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

JSON ou NDJSON: o que muda

JSON comparado com NDJSON
JSONNDJSON
Nome completoJavaScript Object NotationNewline-Delimited JSON
Extensão do arquivo.json.ndjson, .jsonl
Tipo de mídiaapplication/jsonapplication/x-ndjson
Publicado pela primeira vez20012013
EspecificaçãoRFC 8259
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorTodos os navegadoresNenhum navegador
Considerado no lugarXML, YAMLCSV

O que se mantém

Nada é descartado. JSON e NDJSON 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

Nenhum navegador lê NDJSON. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.

jq lê tanto JSON quanto NDJSON, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

JSON foi publicado em 2001. Está descrito em RFC 8259, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

NDJSON e de 2013. jq e pandas leem o formato.

De JSON para NDJSON: perguntas frequentes

Meu arquivo JSON é 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 JSON para NDJSON é 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 JSON para NDJSON?

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

Um arquivo NDJSON abre no navegador?

Nenhum navegador lê NDJSON. É o menos portátil dos dois, então vale confirmar que o destinatário aceita antes de enviar.

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

Nada é descartado. JSON e NDJSON 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