Sintaxe JSON: Regras e Exemplos
Embora JSON seja projetado para ser simples, tem regras de sintaxe estritas que devem ser seguidas exatamente. Uma única vírgula mal colocada ou caractere de aspas errado pode tornar todo seu JSON inválido. Este guia cobre todas as regras de sintaxe que você precisa saber para escrever JSON válido e identificar rapidamente erros quando eles ocorrem.
Regras Básicas
A sintaxe JSON é baseada em um subconjunto de JavaScript, mas com regras mais estritas que garantem compatibilidade entre plataformas. Entender estas regras é essencial para trabalhar efetivamente com JSON. A regra mais importante: documentos JSON devem usar aspas duplas para strings, nunca aspas simples. Enquanto JavaScript permite tanto 'olá' quanto "olá", JSON aceita apenas "olá". Similarmente, todas as chaves em objetos JSON devem ser strings entre aspas duplas. O objeto JavaScript {name: "João"} é JavaScript válido mas JSON inválido; deve ser escrito como {"name": "João"}. Espaços em branco em JSON são flexíveis. Espaços, tabs e quebras de linha podem ser adicionados livremente entre tokens para legibilidade sem afetar os dados. JSON não tem conceito de comentários. Vírgulas finais são estritamente proibidas. JSON é case-sensitive. Os valores booleanos devem ser minúsculos true e false, não True e False. Similarmente, null deve ser minúsculo. A codificação deve ser UTF-8 (preferida), UTF-16 ou UTF-32.
Objetos
Objetos são a estrutura JSON mais comumente usada. Eles representam coleções não ordenadas de pares chave-valor, similares a dicionários em Python ou hashmaps em Java. Um objeto é delimitado por chaves {} e contém zero ou mais pares chave-valor. Cada par chave-valor consiste em uma chave (que deve ser uma string entre aspas duplas), seguida por dois pontos, seguida por um valor. Múltiplos pares são separados por vírgulas. Objetos podem ser aninhados a qualquer profundidade. Diferente de objetos JavaScript, objetos JSON não têm métodos ou funções—eles contêm apenas dados. A ordem das chaves é tecnicamente indefinida pela especificação, embora muitas implementações preservem a ordem de inserção. Chaves duplicadas são tecnicamente permitidas mas fortemente desencorajadas. Evite-as para garantir comportamento consistente entre plataformas.
Arrays
Arrays em JSON representam listas ordenadas de valores. Diferente de objetos que são coleções de propriedades nomeadas, arrays são sequências onde a posição importa. Um array é delimitado por colchetes [] e contém zero ou mais valores separados por vírgulas. Arrays JSON não requerem que todos os elementos sejam do mesmo tipo, embora na prática você geralmente queira tipos consistentes. Arrays aninhados são válidos e úteis para representar dados multidimensionais. A ordem do array é preservada—quando você serializa um array e o analisa de volta, os elementos estarão na mesma ordem.
Erros Comuns de Sintaxe
Até desenvolvedores experientes cometem erros de sintaxe JSON. O erro de aspas simples é extremamente comum entre desenvolvedores vindos de JavaScript. Vírgulas finais causam incontáveis erros de análise ao editar JSON. Chaves sem aspas funcionam em JavaScript mas não em JSON. JSON não tem sintaxe de comentários. Usar valores undefined ou NaN falha porque eles não existem em JSON. Colchetes incompatíveis são fáceis de criar em JSON complexo. Erros de sequência de escape ocorrem quando caracteres especiais em strings não são adequadamente escapados. Formatos de número incorretos como zeros à esquerda ou notação hexadecimal causam erros sutis.
Testar a Ferramenta
Formatador JSON
Artigos Relacionados
O Que é JSON?
Se você está começando sua jornada no desenvolvimento web, provavelmente já encontrou JSON incontáveis vezes, mesmo que não soubesse o que era. JSON, que significa JavaScript Object Notation, é o formato mais amplamente usado para transmitir dados entre aplicações. Dos tweets que você lê nas redes sociais aos dados meteorológicos no seu telefone, JSON está trabalhando nos bastidores para tornar tudo isso possível.
Tipos de Dados JSON
JSON suporta exatamente seis tipos de dados, tornando-o notavelmente simples comparado a linguagens de programação completas. No entanto, estes seis tipos são suficientes para representar virtualmente qualquer estrutura de dados.