100 % local — seus dados nunca saem do seu navegador

NDJSON para JSON — um único array para o jq

Transforme JSON delimitado por quebras de linha num único array. As linhas vazias são puladas e uma linha quebrada é apontada pelo número dela.

Instantâneo Privado Zero cookies
Indentação

Entrada NDJSON

Saída JSON

O que esta ferramenta faz

Entra JSON delimitado por quebras de linha, sai um array.

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

É todo o formato: um valor JSON por linha, sem vírgulas entre eles, sem colchetes em volta. É o que as esteiras de log escrevem, o que o bq load e muitas APIs de fluxo esperam, e o que o jq -c produz.

A linha ruim é nomeada

{"a": 1}

{oops}
Invalid JSON on line 3

A linha vazia é pulada sem uma palavra — um arquivo NDJSON costuma terminar com uma. A linha malformada para a conversão, e a mensagem carrega o número dela, então você vai direto ao ponto. Você não recebe um array parcial: metade dos registros sem nada que avise é pior que um erro.

Os números longos ficam com seus algarismos

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

Passados uns dezesseis algarismos, um número JavaScript deixa de ser exato: leia esse id como número e você recebe outro de volta, em silêncio. Aqui a leitura e a escrita guardam o literal como ele foi escrito, e é isso que faz um arquivo de ids do Twitter ou do Discord sobreviver à viagem.

O que ela não faz

  • Reordenar nem tirar repetidos. O array guarda as linhas na ordem em que vieram, repetições incluídas.
  • Exigir objetos. Uma linha pode ser qualquer valor JSON: 1, "x" e null são registros válidos e passam como tais.
  • Partir uma linha. Dois valores numa linha são um erro, não dois registros.

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

O que acontece se uma linha estiver malformada?
A conversão para e diz qual: `Invalid JSON on line 3`. Nada parcial é devolvido — meio array pareceria um resultado, e você levaria os registros que faltam para o passo seguinte. Corrija a linha e converta de novo.
Os identificadores numéricos longos sobrevivem?
Sim, algarismo por algarismo. Um id de 19 dígitos passa do que um número JavaScript guarda exato, e um conversor que o lesse como número devolveria o valor vizinho sem avisar. Aqui a leitura e a escrita guardam o literal, então `12345678901234567890` sai como ele mesmo.
O que conta como linha, exatamente?
Um valor JSON inteiro. As linhas vazias são puladas, os finais `\r\n` não atrapalham e uma marca de ordem de bytes no começo também não. Dois objetos na mesma linha, porém, não são dois registros: essa linha é apontada como inválida, porque o NDJSON põe um valor por linha e adivinhar onde cortar seria inventar dados.

Conversores relacionados