Conversor JSON Lines (JSONL) ⇔ Array JSON
Converte entre o formato JSON Lines (um objeto JSON por linha) e um array JSON padrão. Útil para verificar conjuntos de dados de machine learning e saídas de logs.
O que é JSON Lines (JSONL)
JSON Lines é um formato em que cada linha contém um objeto JSON. O ficheiro no seu conjunto não é JSON, o que significa que não há vírgulas finais para gerir e que acrescentar registos se resume a acrescentar linhas. É muito usado onde os dados fluem um a um: registos de aplicação, conjuntos de treino para aprendizagem automática e carregamentos em massa no BigQuery ou no Elasticsearch. As extensões habituais são `.jsonl` e `.ndjson`.
Esta ferramenta converte entre JSON Lines e um array JSON nos dois sentidos. Ao passar de JSONL para array, as linhas em branco são ignoradas e qualquer linha que não seja JSON válido é reportada. No sentido inverso, a entrada tem de ter um array no nível superior ou a conversão falha. Tudo corre no seu navegador, por isso os registos e os dados de treino que prefere não enviar para lado nenhum ficam na sua máquina.
Como converter entre JSONL e um array JSON
- Escolha o sentido De JSONL para array JSON, ou de array JSON para JSONL.
- Cole os dados Para JSONL, um objeto por linha. Para um array, cole o texto que começa por `[` tal como está.
- Se surgir um erro, veja essa linha A mensagem identifica que linha não pôde ser analisada. Uma vírgula final ou uma aspa por fechar são as causas habituais.
- Copie o resultado Guarde a saída num ficheiro ou entregue-a diretamente ao passo seguinte do seu processo.
Dicas para aproveitar melhor
- JSON Lines (JSONL) é um formato que coloca um objeto JSON independente por linha, usado como padrão em conjuntos de dados de fine-tuning da OpenAI e na saída de logs de ferramentas como Elasticsearch/Logstash.
- No modo "JSONL → Array JSON", cada linha precisa ser um objeto JSON que possa ser interpretado individualmente. Linhas em branco são ignoradas automaticamente.
- No modo "Array JSON → JSONL", toda a entrada precisa ser um único array JSON (`[ ... ]`). Cada elemento do array é gerado como uma linha de JSONL.
- Ao converter um arquivo de log grande de JSONL para um array JSON, fica mais fácil trabalhar com ele usando o comando `jq` ou o analisador de array JSON padrão da sua linguagem de programação.
Onde esta conversão ajuda
Entregar registos a uma ferramenta de análise
Registos de aplicação escritos um por linha tornam-se utilizáveis por ferramentas e bibliotecas orientadas a arrays depois de reunidos num array JSON.
Preparar dados de aprendizagem automática
Os conjuntos de treino costumam ser distribuídos como JSONL enquanto os scripts de pré-processamento esperam um array. Isto faz a ponte entre os dois.
Carregar no BigQuery ou no Elasticsearch
Ambos aceitam JSON delimitado por mudanças de linha como formato de entrada, por isso um array que já tenha pode ser convertido em algo que consigam ingerir.
Tornar um JSON grande tratável linha a linha
Um array tem de ser lido por inteiro antes de o processamento começar; como JSONL pode ser tratado uma linha de cada vez.
Termos do JSON Lines
- JSON Lines (JSONL)
- Um formato com um valor JSON por linha. **O ficheiro no seu conjunto não é JSON válido**, porque vários valores ficam lado a lado. A sua vantagem é que cada linha pode ser lida de forma independente.
- NDJSON
- Abreviatura de Newline Delimited JSON, essencialmente o mesmo que JSON Lines. Daí vem a extensão `.ndjson`.
- Processamento em fluxo
- Tratar os dados desde o início à medida que chegam, sem os carregar por completo antes. O JSONL encaixa nesta abordagem, e por isso os dois costumam andar juntos.
- Nível superior
- O valor mais exterior de um documento JSON. Converter para JSONL exige um array `[...]` aqui; um objeto `{...}` não pode ser convertido.
- Linhas em branco
- Em JSONL as linhas em branco não significam nada. Esta ferramenta ignora-as, por isso uma mudança de linha solta no fim de um ficheiro não estraga a conversão.
Perguntas frequentes
Curiosidade — Por que surgiu o formato de "um registro por linha"
O formato JSON Lines (também chamado de JSONL) surgiu porque um array JSON padrão tem uma limitação fundamental: não é possível obter nem um único registro até que o array inteiro tenha sido carregado na memória e totalmente interpretado. Tentar tratar dados de log ou conjuntos de treinamento de machine learning com milhões de linhas como um único array JSON exigia carregar o arquivo inteiro na memória, o que causava falta de memória e tempos de interpretação enormes em arquivos muito grandes.
O JSON Lines resolve esse problema com uma regra simples: uma linha equivale a um objeto JSON completo. Como o arquivo pode ser lido e interpretado linha a linha à medida que avança, não é necessário carregá-lo inteiro na memória, o que o torna muito adequado para processamento em streaming e paralelo. Essa filosofia de design também se encaixa bem com a tradição Unix de tratar texto como "um registro por linha" (comandos como `grep`, `awk` e `sed` operam linha a linha), o que representa uma grande vantagem prática, já que se integra diretamente às ferramentas de linha de comando já existentes.
Hoje em dia, é amplamente adotado como formato de distribuição de conjuntos de dados na área de IA e machine learning, sendo comum que dados de treinamento de grandes modelos de linguagem e pares de prompt/resposta para fine-tuning sejam distribuídos no formato JSON Lines.