O Que É JSON?
Em resumo, JSON é um formato leve de troca de informações entre sistemas e a ideia deste artigo é desmistificar um pouco sobre O Que É JSON?
No geral, JSON é um formato de arquivo, com padrão aberto, que traz as características de ser simples, leve, confiável e universal.
Existem conceitos que serão importantes entender para compreender o que é JSON, continue lendo para entender melhor estes pontos e não deixe de interagir comentando o que você sabe sobre este excelente assunto.
JSON significa JavaScript Object Notation e foi derivado do JavaScript, mas passou a ser um formato livre, imparcial e leve para qualquer linguagem de programação gerar, converter e manipular os dados com JSON, como: JSON em .net/C#, JSON em JavaScript, JSON em Java, JSON em Python, JSON em Zig.
Muitos artigos costumam comparar JSON com XML ou com YAML, o que não acho uma boa ideia, pois ambos tem usos diferentes... podemos falar destes tópicos em outro artigo, que tal? 😉
O JSON é um formato com bom tempo de maturidade! De acordo com a Wikipedia:
Douglas Crockford originalmente específicou o formato JSON por volta dos anos 2000. Ele e a Chip Morningstar enviaram a primeira mensagem JSON em Abril de 2001.
É muito utilizado por aplicações e serviços na web, porque pode estruturar informações da maneira mais compacta do que pelo modelo XML, tendo uma análise mais rápida dessas informações, permitindo que estes serviços possam analisar, gerar, transformar e consultar as informações no formato JSON.
As qualidades já ditas aqui trazem a ideia do porque o JSON tem sido adotado por empresas bem estabelecidas no mercado como o Google, Facebook e Twitter, cujas aplicações precisam transmitir grandes volumes de dados através de APIs... Falo um pouco sobre APIs em O Que É Uma API?.
Hoje em dia temos outras tecnologias que estão se estabelecendo e crescendo cada vez mais no uso das pessoas/empresas, como GraphQL, RPC, etc... Mas estes tópicos também ficarão para os próximos artigos 😋
Exemplos
Uma empresa necessita que as informações de um usuário que está no CRM A esteja disponível no ERP B e também no Banco de Dados C, como transitar essas informações? Como representar as informações deste usuário? Segue um exemplo de como ficaria em JSON:
{
"id": 1,
"nome": "Victor Manhani",
"programador": true,
"contaSalario": 13.58,
"coresPreferidas": ["Vermelho", "Azul", "Preto", "Branco"],
"frutaPreferida": "Açaí"
}
Eis um exemplo emprestado do Wikipedia sobre um objeto descrevendo uma Pessoa:
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
Características
O arquivos json tem a extensão .json
, por exemplo: pessoa.json
.
O MIME Type para o JSON é application/json
.
O JSON Schema especifica um formato baseado em JSON para definir um contrato da estrutura de dados JSON e é usado para validação, documentação e controle de interação. Ele fornece um contrato para os dados JSON exigidos por um determinado aplicativo e como esses dados podem ser modificados.
O Json é composto por alguns tipos de dados, tipos primitivos e tipos estruturados. São eles:
Strings
- Uma string é uma sequência de zero ou mais caracteres unicode (especiais ou normais) entre aspas duplas.
- Exemplo:
"Hello World, Json!"
Numbers
- Aceitam integers e floats.
- Integers são números naturais positivos e/ou negativos.
- Floats são números racionais positivos e/ou negativos com ponto flutuante, separados por . (ponto).
- Exemplo:
100
ou
100.12
Booleanos
- São os valores: true (Verdadeiro) ou false (Falso).
- Exemplo:
true
Objetos
- Um objeto é uma coleção não ordenada de zero ou mais pares de nomes/valores separados por , (vírgula).
- Cada objeto é descrito entre as () (chaves).
- Cada objeto tem sua composição de chave e valores separados por : (dois pontos).
- Exemplo:
{
"key": "value"
}
Listas
- Uma lista é uma sequência ordenada de zero ou mais valores.
- Exemplo:
["Açaí", 10, true, null, 13.71, {"preco": 29.66}]
Nulos
- São valores vazios.
- Exemplo:
null
Encoding
- O JSON tem a possibilidade de aceitar caracteres especiais como emojis.
- O JSON em um ecossistema aberto deve ser codificado em UTF-8.
- Exemplo:
{ "face": "😐" }
// or
{ "face": "\uD83D\uDE10" }
Vantagens do JSON
- Baseado em texto
- Formato leve para troca de dados
- Leitura simples para humanos
- Análise mais fácil
- Independe de qualquer idioma
- Padronização na comunicação
- Suporte a objetos
- Velocidade na execução e transporte dos dados
- Arquivo com o tamanho reduzido
- Pode representar a vida real
- Por exemplo, podemos representar as características de um carro dessa maneira:
{
"id": 1,
"Modelo": "Celta",
"Placa": "!!!@@@@",
"cor": "Preto",
"Km": 1127.05
}
Desvantagens
- Não é totalmente seguro.
- Pois é apenas um arquivo de texto trafegando pela web.
- É limitado em termos dos tipos de dados suportados.
- Não tem tipos de datas.
- Por exemplo
2022-07-07
, só pode ser representado por string.
- Por exemplo
- Não tem comentários.
- Verboso.
- Por mais simples que possa parecer, o JSON não é o formato mais simples, existem outros como YAML.
- Não tem namespace.
- Os namespaces tem o objetivo de qualificar elementos de um XML para evitar conflitos entre elementos de mesmo nome.
Minha Definição de JSON
Eu defino o JSON como o que preciso para me comunicar entre dois ou mais sistemas com facilidade, manter organização na comunicação entre estes sistemas e claro, aumentar a velocidade que essas informações trafegam.
Curiosidade
Existe uma ferramenta com a proposta de facilitar ainda mais a leitura de JSON para humanos e ela é a HJson, vale a pena conferir! 😲
Recomendações
-
Tutorial de JSON: w3schools é uma excelente plataforma para aprender sobre JSON, contendo bastante tutoriais, referências e exemplos facilitados.
-
JSON Crack Editor: Neste site você irá ter a visualão do JSON em fluxos ou nós, exportar imagem do json, editar de forma específica... é uma ferramenta extremamente útil!
-
Json Formatter: Essa ferramenta espera resolver o problema formatando e embelezando os dados JSON para que sejam fáceis de ler e ser depurados por seres humanos.
-
JSON Viewer: Essa ferramenta irá possibilitar a leitura e a visualização do seu JSON em nós ou items e é muito útil para quando o assunto for analisar um grande arquivo JSON.
-
JSON Schema Validator: Este site irá permitir a validação do seu JSON com seu JSON Schema.
-
Extensão do Google Chrome - JSON Viewer De acordo com o google:
O marcador JSON/JSONP mais bonito e personalizável que seus olhos já viram.
-
JSON Generator: Você já precisou criar dados simulados para testes de API ou script? Criar um único registro de dados estruturados fakes não é tão difícil. Mas fazê-lo em escala, digamos, milhares de registros pode ser uma tarefa assustadora. Entre no JSON Generator, uma ferramenta que lida com o trabalho pesado para gerar objetos JSON estruturados, repletos de dados aleatórios sequenciados e/ou controláveis. Experimente também a próxima geração do JSON Generator.
-
JSON Schema Generator: Serviço para converter json para json schema.
-
JSON Selector Generator: Você pode copiar e colar um JSON, clique em processar e após isso clique em qualquer dado e esta ferramenta lhe dirá qual seletor usar em JavaScript para acessar esses dados.
-
JSONBin: Se você quer armazenar e disponibilizar seu JSON na web, este site traz essa solução, se classificando como
Uma loja JSON pessoal como um serviço RESTful
. -
MyJson: Se você quer armazer um JSON de forma pública para consumir através de suas aplicações, confira o MyJson e o site JsonServe que trazem este tipo de funcionalidade.
-
JSON:API: Uma especificação para construir APIs em JSON.
Chamada Para Ação
E para você, o que é e o que define o JSON?
Deixe nos comentários qualquer outra recomendação de ferramentas, linguagens, repositórios, tutoriais ou situações sobre JSON. 😁
Referências
- JSON Org
- w3schools - Introdução ao JSON
- DevMedia - O Que É JSON
- Oracle - API Java para JSON
- Blog Mandic - O Que É JSON Desvendado
- DevMedia - Tutorial JSON
- Hostinger - O Que É JSON
- Education Wiki - O Que É JSON
- StackOverflow - XML ou JSON
- Linha de Codigo - Json Uma Introdução
- Hostgator - JSON Guia Completo
- Wikipedia - JSON