100 % local — seus dados nunca saem do seu navegador

JSON para NDJSON — um registro por linha

Transforme um array JSON em JSON delimitado por quebras de linha. Um documento por linha, minificado, pronto para bq load ou uma API de fluxo.

Instantâneo Privado Zero cookies

Entrada JSON

Saída NDJSON

O que esta ferramenta faz

Um array JSON vira um documento JSON por linha.

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

Cada linha sai minificada, e isso não é escolha de estilo: um documento indentado ocupa várias linhas, e em NDJSON uma quebra de linha significa próximo registro. A indentação e o formato se excluem.

A raiz tem de ser um array

O array é a lista de registros. Um objeto na raiz é um documento único; reparti-lo em linhas seria decidir que suas chaves são registros — um palpite que esta ferramenta não dá. A conversão para.

Os elementos, esses, são livres: null, 42 e "texto" são documentos JSON válidos e, portanto, linhas NDJSON válidas. Registros costumam ser objetos, mas nada aqui obriga a isso.

Os inteiros longos guardam seus dígitos

[{ "id": 12345678901234567890 }]

sai com os vinte dígitos. Um conversor que passa por um número JavaScript escreve 12345678901234567000 no lugar, sem dizer nada: o valor muda e o arquivo continua perfeitamente bem formado.

Este fazia exatamente isso. O defeito foi encontrado ao escrever esta página e corrigido; o identificador agora sobrevive à ida e volta pelo NDJSON.

Um array vazio dá um arquivo vazio

[] não produz saída nenhuma, e essa é a resposta certa: o NDJSON não tem outro jeito de escrever «zero registros» senão um arquivo vazio. Isso significa que um resultado vazio e uma entrada vazia se parecem — bom saber antes de concluir que nada aconteceu.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Por que a raiz precisa ser um array?
Porque NDJSON é uma lista de registros e o array é essa lista. Um objeto na raiz é um documento único, e não há maneira honesta de decidir se ele é um registro ou uma coleção a ser repartida. Ele é recusado em vez de adivinhado.
O que acontece com uma quebra de linha dentro de uma das minhas strings?
Ela é escrita `\n`, como o JSON exige, e portanto fica dentro da linha. Isso pesa mais aqui do que em outros lugares: em NDJSON a quebra de linha separa os registros, e uma real no meio de um documento partiria um registro em duas metades inanalisáveis.
Meu arquivo é um único array de um milhão de linhas. Isso é um problema?
É o caso para o qual o NDJSON existe, mas a conversão lê o array inteiro na memória assim mesmo: a entrada é um documento JSON, e um documento precisa estar completo para ser analisado. A partir de certo tamanho, uma ferramenta de fluxo como `jq -c ".[]"` é o instrumento certo.

Conversores relacionados