
JSON (JavaScript Object Notation) é um formato de texto leve para representar dados estruturados. Apesar do nome, é independente de linguagem e usado em todo lugar, desde APIs REST até arquivos de configuração. Um documento JSON válido é um objeto (um conjunto de pares chave-valor entre chaves) ou um array (uma lista ordenada entre colchetes).
Os seis tipos de valor em JSON são: string, number, boolean (true/false), null, object e array. Cada chave em um objeto JSON deve ser uma string entre aspas duplas — não aspas simples, não identificadores sem aspas.
JSON é rígido. Um único erro de sintaxe torna o documento inteiro impossível de analisar. Os erros mais frequentes são:
{"name": "Alice",} — a vírgula após o último item é ilegal em JSON (é válida em JavaScript, o que causa confusão).{'key': 'value'} não é um JSON válido.{name: "Alice"} é sintaxe de objeto literal JavaScript, não JSON.null ou omita o campo.\n, não como quebras de linha literais.O JSON enviado pela rede geralmente é minificado — sem espaços em branco — para reduzir o tamanho do payload. Mas o JSON armazenado em arquivos de configuração ou versionado deve ser formatado para legibilidade humana. As convenções padrão são:
A maioria dos editores consegue formatar JSON automaticamente. No VS Code, clique com o botão direito e selecione "Formatar Documento", ou use o atalho Shift+Alt+F. Usuários de linha de comando podem usar jq . input.json para formatar qualquer arquivo JSON.
O próprio JSON não impõe convenções de nomenclatura, mas sua API ou base de código deve escolher uma e mantê-la. Os três padrões comuns são:
firstName) — padrão em APIs JavaScript e na maioria dos serviços RESTfirst_name) — comum em APIs Python e PostgreSQLFirstName) — usado em alguns ambientes .NET e C#Misturar convenções em uma única API é fonte de confusão. Se você consome uma API com uma convenção e sua base de código usa outra, trate a conversão em uma camada de serialização dedicada em vez de espalhar conversões ad-hoc por todo o seu código.
Um objeto JSON pode representar a ausência de um valor de duas formas: a chave está presente com valor null, ou a chave está completamente ausente. Elas têm semânticas diferentes. Use null quando um campo é esperado mas não tem valor (por exemplo, um campo de nome do meio que o usuário deixou em branco). Omita o campo quando ele simplesmente não se aplica a aquele registro. Decida por uma abordagem consistente dentro da sua API para que os consumidores saibam o que esperar.
Os números JSON não têm limite de tamanho definido, mas muitos parsers os desserializam como valores de ponto flutuante de precisão dupla IEEE 754. Isso significa que inteiros maiores que 2^53 não podem ser representados com precisão. Se o seu JSON precisa carregar inteiros grandes (IDs de banco de dados, valores financeiros em unidades monetárias menores, identificadores criptográficos), represente-os como strings e documente isso na sua API. Esse é um problema bem conhecido com os IDs de tweets do Twitter, por exemplo.
Além da validação de sintaxe (este JSON é válido?), o JSON Schema permite definir a estrutura esperada de um documento: quais campos são obrigatórios, seus tipos, intervalos de valores e mais. Ferramentas como ajv (JavaScript), jsonschema (Python) e validadores online podem verificar um documento JSON em relação a um esquema. Para qualquer API que você publica ou consome em um contexto de produção, a validação com JSON Schema vale a pena ser implementada na fronteira.
Um formatador e validador JSON — como o do TheDailyUtils — é a forma mais rápida de identificar erros de sintaxe em um payload desconhecido. Cole o JSON bruto e você verá imediatamente se ele é válido e onde estão os erros.
Abra o formatador JSON gratuito — cole qualquer JSON para formatar, minificar ou identificar erros de sintaxe em segundos. Funciona no seu navegador; seus dados ficam privados.