O que é o formato de ficheiro JSON?
Arquivos com a extensão .json contêm dados armazenados em formato de texto simples, usando uma notação derivada de um subconjunto de JavaScript, com codificação UTF-8. A descrição autoritativa atual do formato é ECMA-404 e IETF RFC 8259 (2017), que substituiu a anterior RFC 4627. Entre outros usos, o .json é amplamente utilizado para transferir informações através de redes e para armazenar configurações, ajustes e estado de aplicação serializado.
Um documento .json pode conter:
- Strings,
- Números (ponto flutuante de precisão dupla IEEE 754),
- Valores booleanos (
trueefalse), null,- Arrays dos elementos acima,
- Objetos (mapas de chave-valor).
Objetos e arrays podem ser aninhados em múltiplos níveis. Embora a sintaxe dos arquivos .json seja baseada em JavaScript, eles são usados dentro de aplicações escritas em virtualmente todas as linguagens de programação. Em JavaScript, a análise e a serialização são tratadas pelos métodos integrados JSON.parse() e JSON.stringify(), disponíveis desde o ECMAScript 5 - nenhuma biblioteca externa é necessária. O formato não possui suporte para comentários. Formatos de dados baseados em texto relacionados incluem YAML, XML e CSV.
Segurança e proteção
RISCO: LOWUm arquivo JSON é dado puro - não pode conter ou executar código, portanto, abrir um em um editor é seguro. Os riscos são informativos: exportações de dados geralmente contêm dados privados, chaves de API ou tokens de sessão (não cole tais arquivos em visualizadores online ou os compartilhe); e para desenvolvedores, analisar JSON não confiável com eval() em vez de JSON.parse(), ou arquivos superdimensionados usados para negação de serviço, são armadilhas clássicas. Cuidado com extensões duplas (.json.exe) em downloads.
Detalhes do formato
em resumoProgramas que abrem arquivos JSON
Detalhes técnicos
especificação profunda| Tipo MIME | application/json |
| Codificação de caracteres | UTF-8; a RFC 8259 exige UTF-8 sem BOM para intercâmbio de rede |
| Assinatura do arquivo (magic bytes) | Nenhuma - texto simples; um documento válido começa com «{» (objeto) ou «[» (array), opcionalmente precedido por espaço em branco |
| Tipos de dados suportados | string, number, boolean (true/false), null, array, object |
| Representação numérica | Ponto flutuante de precisão dupla IEEE 754 (64 bits); a especificação não define um tipo de número inteiro distinto |
| Codificação de string | Unicode; caracteres não-ASCII podem aparecer como UTF-8 literal ou como sequências de escape de quatro dígitos hexadecimais \uXXXX |
| Suporte a comentários | Nenhum - comentários são explicitamente excluídos da especificação JSON |
| Espaço em branco | Espaço em branco insignificante (espaço, tabulação, CR, LF) é permitido entre quaisquer dois tokens |
| Tratamento de BOM | A RFC 8259 proíbe explicitamente um BOM UTF-8 no início de um documento de intercâmbio JSON |
| Unicidade de chave de objeto | As chaves dentro de um objeto devem ser únicas; a RFC 8259 não proíbe duplicatas, mas deixa o comportamento definido pela implementação |
| Aninhamento | Aninhamento recursivo ilimitado de objetos e arrays; a profundidade prática é limitada pelo tamanho da pilha do analisador |
| API JavaScript integrada | JSON.parse() e JSON.stringify() são nativos desde o ECMAScript 5 (2009); nenhuma biblioteca de terceiros é necessária |
| Interoperabilidade | Agnóstico de linguagem; analisadores e serializadores existem para virtualmente todas as principais linguagens de programação |
| Usos comuns | Payloads de REST API, arquivos de configuração de aplicativos, serialização de dados, linhas de log em streaming (JSONL / NDJSON), manifestos de web apps |
| Lançado | 2001 (json.org); first IETF spec RFC 4627 (2006); current RFC 8259 / ECMA-404 (2017) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | www.rfc-editor.org |
Conversões de JSON
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos JSON.