Neste tutorial, vamos apresentar o Formato de troca de dados JSON. Esta postagem aborda a estrutura de um objeto JSON, regras de sintaxe JSON, troca de dados com JSON e suporte a linguagens de programação para JSON.
O que é JSON?
- JSON é um formato de intercâmbio de dados leve e legível por humanos.
- JSON é usado para armazenar um collection de pares nome-valor ou um lista ordenada de valores.
- JSON é útil para serialização objects, e arrays para transmissão pela rede.
- JSON é muito fácil de analisar e gerar e não usa uma estrutura de marcação completa como um XML.
- JSON tornou-se uma alternativa popular do formato XML para sua rápida comunicação cliente-servidor assíncrona.
- Todos os arquivos JSON têm a extensão
.json
.
Estrutura de um objeto JSON:
Um JSON pode ser:
- Uma coleção de pares nome-valor:
o nome deve ser uma string com aspas duplas; e a valor pode ser outro string, um array, uma número, boolean ou nulo. O valor em si pode ser outro JSON object.
- Uma coleção ordenada:
JSON pode ser usado para armazenar uma coleção ordenada de objetos/valores. A coleção é semelhante a um array de primitivos e array de objetos em linguagens de programação.
Exemplo JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "firstName": "John", "lastName": "Snow", "age": 25, "children": [], "spouse": null, "address": { "street": "7504 Taylor Drive", "city": "New York City", "state": "New York", "postalCode": "11238" }, "phoneNumbers": [ { "type": "mobile", "number": "212 555-3346" }, { "type": "fax", "number": "646 555-4567" } ] } |
No exemplo acima,
- Os dois primeiros pares nome-valor mapeiam uma string para outra string.
- O terceiro par nome-valor mapeia uma string
age
com o número 25. - O quarto par nome-valor mapeia uma string
children
com uma array vazia[]
. - O quinto par nome-valor mapeia uma string
spouse
com umnull
valor. - O sexto par nome-valor mapeia uma string
address
com outro objeto JSON. - O sétimo par nome-valor mapeia uma string
phoneNumbers
com uma array de objetos JSON.
Regras de sintaxe JSON:
- Um JSON object está cercado por chaves
{}
. - Os pares nome-valor são agrupados por um cólon
(:)
e separados por um vírgula(,)
. - Um array começa com um colchete esquerdo e termina com um colchete direito
[]
. - As vírgulas à direita e os zeros à esquerda em um número são proibidos.
- Os formatos octal e hexadecimal não são permitidos.
- Each chave dentro do JSON deve ser exclusivo e deve ser colocado entre aspas duplas.
- o boolean type corresponde apenas a dois valores especiais:
true
efalse
e valores NULL são representados pelonull
literal (sem aspas).
Biblioteca JavaScript JSON incorporada:
A biblioteca integrada JavaScript JSON fornece duas funções para decodificar e codificar objetos JSON – JSON.parse()
e JSON.stringify()
.
1. JSON.stringify()
retorna uma string JSON correspondente a um objeto JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html> <head> <title>Encoding a JavaScript object into a JSON string.</title> </head> <body> <div id="json"></div> <script> var obj = { "fruit": "Apple", "types": ["Small", "Medium", "Large"], "quantity": 1000 }; var json_string = JSON.stringify(obj); document.getElementById("json").innerHTML = json_string; </script> </body> </html> |
Resultado:
{“fruit”:”Apple”,
“types”:[“Small”,”Medium”,”Large”],
“quantity”:1000}
2. JSON.parse()
é um método seguro e rápido de decodificar uma string JSON como objeto JavaScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!DOCTYPE html> <html> <body> <h2>Decoding a JSON string into a JavaScript object.</h2> <div id="json"></div> <script> var json_str = '{"fruit":"Apple","types":["Small","Medium","Large"],"quantity":1000}'; try { var obj = JSON.parse(json_string); document.getElementById("json").innerHTML = obj.fruit + ", [" + obj.types + "], " + obj.quantity; } catch (e) { alert("Cannot parse given string"); } </script> </body> </html> |
Resultado:
Apple,
[Small,Medium,Large],
1000
Também podemos analisar uma string JSON em um objeto JavaScript invocando o eval()
função na string JSON entre parênteses. Isso funciona porque o JSON é derivado do JavaScript. eval()
é uma função maligna, que deve ser evitada a todo custo. Isto é porque eval
pode executar qualquer script malicioso na máquina do usuário com os privilégios do chamador. Além disso, o código malicioso pode encontrar o escopo no qual eval()
foi invocado, tornando o site vulnerável a ataques. JSON.parse()
é a alternativa segura e rápida de eval, que falha com segurança em código malicioso. JSON está incluído em quase todos os navegadores modernos. Para versões antigas de navegadores, use uma biblioteca JavaScript externa, como Json2.js de Douglas Crockford.
Troca de dados com JSON:
JSON é usado principalmente para a transmissão de texto serializado entre um navegador e um servidor.
- Dados de envio:
No lado do cliente, o objeto JavaScript é primeiro convertido em uma string JSON usando
JSON.stringify()
método. E a string resultante é então transmitida para um servidor no corpo ou parâmetro da solicitação. - Recebendo dados:
O servidor pode retornar outra string JSON como resposta. Qualquer JSON recebido do servidor pode ser convertido em objetos JavaScript usando o
JSON.parse()
método.
O tipo de mídia oficial para JSON é application/json
.
Suporte a linguagens de programação:
Originalmente, JSON pretendia ser um subconjunto das linguagens JavaScript, mas agora quase todas as principais linguagens de programação suportam JSON devido ao seu formato de dados independente de linguagem. Site oficial do JSON lista as principais bibliotecas JSON disponíveis em várias linguagens de programação que podem ser usadas para analisar e gerar JSON. Por exemplo, as bibliotecas JSON mais populares para Java são GSON, JSON.simple, Jackson e JSONP.
Isso é tudo sobre o formato de troca de dados JSON.
Links Úteis: