JSON, JavaScript Object Notation, e um formato de texto para representar dados estruturados: objetos, listas, strings, numeros, booleanos e um valor nulo, escrito em uma sintaxe pequena o suficiente para ser lido em uma tarde e rigorosa o suficiente para que todas as linguagens o analisem da mesma forma. Nao esta vinculado a JavaScript apesar do nome. Toda linguagem principal fornece um analisador JSON em sua biblioteca padrao ou com uma linha de instalacao, que e a razao real pela qual venceu: nao porque e elegante, mas porque e monoton e portavel.
Como parece
{
"nome": "Ada Lovelace",
"idade": 36,
"estaEmpregada": true,
"habilidades": ["matematica", "escrita"],
"endereco": { "cidade": "Londres", "pais": "UK" },
"apelido": null
}
Um objeto e { } contendo pares chave valor, um array e [ ] contendo uma
lista ordenada, e tudo mais se aninha dentro desses dois contenedores. Essa
e toda a forma de JSON: dois tipos de contenedor e alguns tipos de valor
dentro deles.
Os seis tipos de valor, nem mais nem menos
Um valor JSON e uma string, um numero, um booleano (true ou false),
null, um array ou um objeto. Mais nada existe na especificacao. Nao ha
tipo data, nao ha undefined, nao ha sintaxe de comentarios, e nao ha forma
de representar uma funcao. Uma data se torna uma string em um formato que
ambas as partes concordam (geralmente ISO 8601), e um valor que seria
undefined em JavaScript e simplesmente omitido do objeto em vez de escrito.
Tipos de Dados JSON Explicados detalha cada um dos
seis com mais profundidade, incluindo os casos limites que derrubam um
analisador ingenuo.
Por que substituiu XML na maioria das APIs
XML envolve cada valor em tags de abertura e fechamento, suporta atributos alem disso, e precisa de uma linguagem de schema separada para descrever o que e valido. Os contenedores JSON tem dois caracteres cada, os valores sao tipados sem uma tag dizendo isso, e a forma do documento reflete a forma da estrutura de dados que um programa realmente usa; analisar um documento JSON no literal de objeto nativo de uma linguagem e quase uma copia direta, onde um documento XML geralmente precisa do seu proprio modelo de objetos traduzido por cima. Essa e uma diferenca real e mensuravel em tamanho de payload e custo de analise, e e por isso que as APIs REST se estabeleceram em JSON uma vez que ele existiu. Veja JSON vs XML para uma comparacao mais proxima e especifica.
Onde voce realmente o encontra
- Respostas e requisicoes de APIs REST. O formato dominante para corpos
Content-Type: application/json, em ambas as direcoes. - Arquivos de configuracao.
package.json,tsconfig.json, e a maioria das configuracoes de ferramentas modernas, embora YAML tambem seja comum aqui; veja JSON vs YAML para quando cada um e melhor. - Bancos de dados NoSQL e de documentos. Os documentos MongoDB sao armazenados como BSON, um superconjunto binario de JSON, e a maioria dos bancos de dados de documentos aceita e retorna JSON diretamente.
- Linhas de log e pipelines de dados, um objeto JSON por linha, um formato geralmente chamado NDJSON. Casos de Uso Comuns de JSON percorre isso e os outros com formas reais.
- Armazenamento do navegador.
localStorageso armazena strings, entao qualquer coisa estruturada passa porJSON.stringifyao entrar e porJSON.parseao sair.
Trabalhando com
Cole um documento no Formatador JSON para imprimi-lo formatado, ou no Validador JSON para verifica-lo contra a especificacao com uma linha e coluna no caractere exato que falhou. Nenhum envia o que voce cola; ambos rodam inteiramente no seu navegador. Uma vez que o basico faca sentido, a Folha de Referencia JSON e uma referencia de uma pagina para as regras de sintaxe acima, vale a pena manter aberta em uma aba ou baixar para referencia offline.