Formatar e Validar JSON
Confira a sintaxe de objetos e arrays JSON ou organize sua apresentação.
O que faz e quando usar
Uma estrutura de dados organiza informações para que seja possível distinguir o que cada parte representa. Uma lista de compras tem itens em sequência; um cadastro tem campos com nomes; um pedido pode reunir dados do cliente e uma lista de produtos. JSON é uma sintaxe textual para representar essas estruturas e transportá-las entre programas. Dois elementos são centrais. Um objeto, delimitado por { e }, associa chaves a valores: {"nome":"Ana","idade":30}. Um array, delimitado por [ e ], reúne valores em uma sequência: ["arroz","feijão"]. Um objeto serve para nomear campos; um array serve para preservar uma lista e sua ordem. Arrays podem conter objetos, e objetos podem conter arrays.
Como funciona
Dentro de um objeto, cada chave é um texto entre aspas duplas, seguido de dois-pontos e de um valor. Vírgulas separam pares vizinhos. Os tipos de valor JSON são string (texto), número, booleano (true ou false), null, objeto e array. O valor 30 é número; "30" é texto. null indica um valor nulo e não equivale à string "null". O parser lê caracteres e tenta construir esses valores de acordo com a gramática. Validar verifica se essa leitura é possível. Formatar usa a mesma leitura e depois escreve os valores com indentação consistente. Espaços fora de strings podem mudar a apresentação sem mudar a estrutura; espaços dentro de "Ana Maria" fazem parte do próprio valor.
Aplicação prática e conferência
Parser é o programa que lê os caracteres e verifica se eles seguem a gramática JSON, construindo os valores correspondentes. Formatar começa com essa leitura e escreve os valores com espaços e recuos. Validar sintaxe responde se a leitura foi possível, sem precisar reescrever a entrada. Um erro de sintaxe interrompe a leitura; não é um campo de negócio inválido que o parser poderia simplesmente ignorar. Schema é uma descrição das estruturas e tipos esperados por uma aplicação. {"idade":"trinta"} pode ser JSON válido para o parser, mas não atender a um schema que exija idade numérica. A página não executa validação de JSON Schema: formato reconhecido não significa contrato atendido.
Exemplo resolvido
Entrada válida: {"nome":"Ana","itens":[1,2],"ativo":true}. Comece pelas chaves externas: há um objeto com três propriedades. nome tem valor string, itens tem um array com dois números e ativo tem um booleano. A lista está dentro do objeto, sem transformar cada número em uma propriedade com nome. Formatar pode separar essas propriedades em linhas e recuar níveis para facilitar a leitura. O documento continua representando os mesmos valores; espaços fora das strings e quebras de linha não convertem números em texto. Já os espaços dentro de "Ana Maria" fazem parte do valor e precisam ser preservados. Entrada inválida: {"nome":"Ana",}. A vírgula anuncia outro par chave/valor, mas o objeto termina antes dele. Remover a vírgula corrige esse erro. Em {nome:"Ana"}, falta colocar a chave entre aspas duplas: é outra regra de sintaxe. Uma correção deve tratar a causa, sem simplesmente apagar pontuação até o erro desaparecer.
Leitura do resultado e erros comuns
JSON válido significa que a sintaxe foi reconhecida, não que os dados sejam verdadeiros, seguros ou adequados a uma API. Compare os tipos e a hierarquia com o contrato de quem vai receber o documento. Uma chave escrita no nível errado pode continuar sintaticamente válida e ainda assim mudar completamente o pedido. A saída formatada ajuda a enxergar essa hierarquia: campos com o mesmo recuo pertencem ao mesmo nível, enquanto um array reúne uma sequência. Se o objetivo é apenas conferir sintaxe sem reescrever a entrada, o modo de validação responde à pergunta mais restrita.
Limitações e cuidados
O processamento ocorre no navegador com JSON.parse e JSON.stringify. Não é validação de JSON Schema nem execução de comandos. Comentários, chaves sem aspas e vírgulas finais não pertencem à sintaxe JSON. A representação Number do JavaScript pode perder precisão de inteiros muito grandes; reformatar não recupera os algarismos já perdidos. Chaves repetidas e detalhes de escape podem ser alterados na reserialização.