Formatador JSON
Formate, minifique e valide JSON - e, quando não for possível analisá-lo, saiba exatamente onde.
Entrada
0 caracteresSaída
Formate, minifique e valide JSON - e, quando não for possível analisá-lo, saiba exatamente onde.
O JSON que sai de um log de API ou de um arquivo de configuração costuma ser uma única linha longa, e o JSON que não analisa costuma falhar em algum ponto que você não consegue ver. Isso o indenta para que você possa lê-lo, o minifica quando você precisa dele compacto, e quando está quebrado informa a linha e a coluna e mostra essa linha.
Na maioria das vezes você não está aqui para deixar o JSON bonito - você está aqui porque algo o rejeitou e não disse por quê. O analisador informa a linha, a coluna e o que esperava, e a ferramenta imprime essa linha junto com as duas ao redor. Uma vírgula faltando quatrocentas linhas dentro de uma configuração é uma correção de trinta segundos assim que você sabe onde ela está.
O JSON nunca permitiu nenhum dos dois, mas os arquivos que as pessoas realmente entregam a você - tsconfig, configurações do VS Code, qualquer coisa editada manualmente - estão cheios deles. Marcar a opção os remove antes da análise, e a ferramenta então informa quantos comentários e quantas vírgulas removeu. É opcional e informado com precisão porque um formatador que altera seu documento silenciosamente é pior do que um que o recusa.
Ele não adivinha o que você quis dizer. Além das duas remoções acima, nada é reparado: uma chave não fechada, uma chave de objeto entre aspas simples ou sem aspas é relatada, não reescrita. Ordenar chaves e reindentar nunca reordenam um array nem alteram uma string. A próxima seção lista os poucos casos em que o resultado ainda pode diferir do que você colou.
Seu JSON é analisado e escrito de novo, então algumas coisas voltam normalizadas. Os números são reescritos: 1.50 vira 1.5, 1E3 vira 1000.0 e -0 vira 0, e um decimal com mais dígitos do que cabem em um float de 64 bits é arredondado (0.1000000000000000055 vira 0.1). Inteiros são mantidos exatos até 4.300 dígitos (os mais longos são recusados). Se um objeto repete uma chave, só o último valor é mantido, sem aviso. NaN, Infinity e -Infinity são aceitos e mantidos, embora o JSON padrão (RFC 8259) não os permita, e um número grande demais para um float, como 1e400, sai como Infinity. Se algo disso importa para o sistema que vai receber o arquivo, verifique você mesmo antes de confiar em um resultado sem erros.
Ele é enviado ao servidor para ser analisado e devolvido diretamente na mesma resposta. Nada é gravado em disco, armazenado em cache ou registrado em log, e o registro de uso mantém apenas contagens - tamanho, profundidade de aninhamento, modo escolhido - nunca o documento.
Geralmente comentários, vírgulas finais, aspas simples ou chaves sem aspas - todos comuns em arquivos de configuração e nenhum deles JSON válido. Marque "permitir comentários e vírgulas finais" para os dois primeiros; os demais são genuinamente inválidos e precisam ser corrigidos.
Até 2.000.000 de caracteres por solicitação; um texto maior é recusado com o tamanho exato informado. Para arquivos desse tamanho, uma ferramenta de linha de comando como o jq é o melhor instrumento.
Pipelines de log e carregadores de streaming leem um objeto JSON por linha em vez de um grande array. Escolha-o e um array de nível superior volta como um registro compacto por linha.
Não. A ordem das chaves de um objeto não tem significado em JSON, e a ordem de um array - que tem significado - nunca é tocada. A ordenação existe para que duas versões do mesmo documento possam ser comparadas sem ruído.
No Excel para Microsoft 365, salve-o como arquivo .json e escolha Data > Get Data > From File > From JSON (Dados > Obter Dados > De Arquivo > Do JSON). O Power Query o abre: um array de nível superior aparece como List, To Table (Para Tabela) o transforma numa coluna de Records, e o botão de expandir (duas setas) no cabeçalho da coluna separa cada chave em sua própria coluna; expandir um array aninhado acrescenta uma linha por item. O Power Query precisa de um único documento JSON válido, então corrija antes aqui qualquer erro, mostrado com linha e coluna, e salve a saída de Embelezar ou Minificar; a saída JSON Lines é feita para ferramentas de logs. Esta ferramenta não converte JSON em CSV ou Excel por conta própria.
O Python já traz um validador: python -m json.tool data.json imprime o documento com recuo de 4 espaços ou para com uma mensagem como Expecting ',' delimiter: line 3 column 3. Com o jq instalado, jq . data.json formata e jq empty data.json só verifica, sem imprimir nada quando o arquivo é válido. Nenhum dos dois aceita comentários nem vírgulas no final, então um arquivo de configuração que os tenha falha; cole-o aqui e marque "Permitir comentários e vírgulas no final" para ver o que foi removido.
O analisador esperava uma chave de objeto e encontrou outra coisa. Normalmente as chaves estão entre aspas simples ou sem aspas, como em {'name': 'Asha'} copiado do Python ou do JavaScript, que para na linha 1, coluna 2: o JSON exige aspas duplas em toda chave e toda string, e esta ferramenta nunca reescreve aspas, então troque-as você mesmo. A mesma mensagem em uma chave de fechamento, como em {"a": 1,}, indica uma vírgula no final; marque "Permitir comentários e vírgulas no final" para removê-la. Expecting value em True, False ou None indica valores do Python: o JSON escreve true, false e null em minúsculas. No Python, json.dumps(data) gera JSON válido e print(data) não. Os erros aparecem exatamente como o analisador do Python os escreve, em inglês, para que você possa pesquisar a mensagem como está.
O analisador leu um valor JSON completo e depois encontrou mais texto. Causas comuns: um log JSON Lines (NDJSON) com um objeto por linha, que para na linha 2, coluna 1; dois documentos colados um depois do outro; ou um comentário // depois da última chave de fechamento, que "Permitir comentários e vírgulas no final" remove. Esta ferramenta verifica um documento por vez, então cole um único registro ou coloque os registros dentro de [ ] separados por vírgulas; escolhendo JSON Lines, eles voltam a ser escritos um por linha.