Já não é nenhuma novidade no mundo de desenvolvimento web o uso e abuso da tecnologia JSON. Entretanto, nem todos conhecem este padrão de intercâmbio facilitado de dados entre aplicações. Não é obrigatório, mas saber JSON pode ser bastante útil em projetos um pouco mais sofisticados e/ou que necessitam de uma demanda/política de transferência de dados mais simples, leve e eficiente.
Usar JSON proporciona inúmeras vantagens ao desenvolvedor web. Desde a simplicidade em tratar os dados à maneira fácil como é possível integrar tecnologias client-side com server-side, o JSON certamente é bastante recomendado.
O que é e para que serve JSON
JSON é o acrônimo para “JavaScript Object Notation“. Como é possível notar pelo nome, originalmente o JSON foi concebido para se trabalhar com javascript, mas, já adiantando, não é necessariamente obrigatório o uso de javascript para seu uso, dado que, atualmente, é possível utilizar JSON com mais de 20 linguagens de programação diferentes.
Uma definição interessante é a do Wikiédia:
JSON (com a pronuncia djeisón), um acrônimo para “JavaScript Object Notation”, é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer javascript, exclusivamente.
O formato JSON foi originalmente criado por Douglas Crockford e é descrito no RFC 4627. O media-type oficial do JSON é application/json e a extensão é .json.
Mas uma definição que explica, de forma bem mais simples e objetiva, é a de Tiago Belem, em seu artigo “Introdução a JSON e PHP“, no qual consta que
JSON é um padrão de formatação de dados que serão transmitidos entre duas aplicações de linguagens diferentes.
Quer dizer, JSON é usado, principalmente, para permitir a troca de dados entre linguagens. Mas não só isso, ele também é ótimo para lidar com webservices e tem muitos outros usos.
Vantagens em se usar JSON
A descrição de dados em JSON é bem fácil, não passando de um documento de texto puro disposto em um padrão simples. Conforme foi explicado, JSON é excelente para intercâmbio de informações entre aplicativos.
Mas também existem outras maneiras de se fazer isso, por exemplo, com XML. Entretanto, o JSON apresenta vantagens bastante interessantes, o que, após uma análise do caso de seu aplicativo ou sistema web, pode levá-lo a optar por ele. Algumas das vantagens são:
- Sintaxe simples, de fácil aprendizado e implementação;
- Tamanho do arquivo bem menor em relação a outras “linguagens intermediárias”, tais como XML;
- Facilidade de desenvolvimento e alto desempenho nas aplicações que o utilizam.
Estruturas JSON
É possível ver alguns diagramas das estruturas no próprio site oficial do JSON; basicamente, é o seguinte:
Vamos ver, então, como podemos descrever dados simples usando o que a sintaxe que ele nos oferece.
Arrays
Por exemplo, vamos ver como seria um array dos dias da semana:
1 |
["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"] |
Perceba que strings devem ser indicadas com aspas duplas.
Elementos separados por vírgulas entre colchetes é a notação JSON para um array (naturalmente, a vírgula delimita cada item). A maioria dos desenvolvedores prefere identar um pouco o código para facilitar a leitura:
1 2 3 4 5 6 7 8 9 |
[ "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado" ] |
É possível, também, misturar diversos tipos de dados em um só array:
1 2 3 4 5 6 7 8 |
[ 33, "Segunda", TRUE, 3.14159265, NULL, "maçã" ] |
Objetos
Como vimos, arrays são representados por colchetes. No caso de objetos, estes são representados por chaves; cada chave é identificada por uma string e, depois de um dois-pontos, os valores de cada item especificados. Fica mais claro com um exemplo:
1 2 3 4 5 6 7 8 9 |
{ "Domingo" : "Folga", "Segunda" : "Viagem", "Terça" : "Pagamentos", "Quarta" : "Piscina", "Quinta" : "Churrasco", "Sexta" : "Carteado", "Sábado" : "Festa" } |
Perceba que não tem importância haver espaços a mais ou a menos entre a descrição da chave, o separador “:” e o valor desta. Tudo será interpretado corretamente.
Alguns exemplos
É bastante simples descrever JSON, você viu. Como os objetos de qualquer outra linguagem de programação, é possível armazenar quaisquer tipos de dados e quantos dados se desejar. Veja este exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "Marconildo": { "url": "http://www.marconildo.com.br/", "idade": 34 }, "Joanorta": { "url": "http://www.joanorta.com.br/", "idade": 22 }, "Estripafurgia": { "url": "http://www.estripafurgia.com.br/", "idade": 47 } } |
Perceba que, neste caso, cada objeto possui, “url” e “idade” (provavelmente este não seria um exemplo “da vida real”, mas dá para ilustrar bem o conceito), mas, não necessariamente, todos devem possuir o mesmo número de propriedades. Poderia haver um ou mais elementos com “url”, “idade”, “altura”, “endereco”, etc. É possível, inclusive, a utilização de arrays:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "Marconildo": { "url": "http://www.marconildo.com.br/", "idade": 34 }, "Joanorta": { "url": "http://www.joanorta.com.br/", "idade": 22 }, "Estripafurgia": { "url": "http://www.estripafurgia.com.br/", "idade": 47, "diasDeTrabalho": [ "Segunda", "Quarta", "Sexta" ] } } |
E, até, um array de objetos!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
{ "Marconildo": { "url": "http://www.marconildo.com.br/", "idade": 34 }, "Joanorta": { "url": "http://www.joanorta.com.br/", "idade": 22 }, "Estripafurgia": { "url": "http://www.estripafurgia.com.br/", "idade": 47, "dependentes": [ "Astolfinho": { "sexo" : "m", "idade": 16 }, "Mariazinha": { "sexo" : "f", "idade": 10 } ] } } |
JSON e javascript
Agora você já aprendeu as notações básicas do JSON, mas o que fazer com isso, como usar, efetivamente, o poder do JSON nas aplicações do dia-a-dia usando javascript? Veja um exemplo simples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
var funcionarios = ' { "Marconildo": { "url": "http://www.marconildo.com.br/", "idade": 34 }, "Joanorta": { "url": "http://www.joanorta.com.br/", "idade": 22 }, "Estripafurgia": { "url": "http://www.estripafurgia.com.br/", "idade": 47 } } '; var funcionario = JSON.parse(funcionarios); alert(funcionario.Marconildo); alert(funcionario.Marconildo.idade); |
Foi criada a variável “funcionarios” e colocado uma string JSON nela. Usando a função JSON.parse, convertemos a string para, efetivamente, JSON na variável “funcionario”e, a partir daí, foi possível acessar todas suas propriedades com a notação padrão de OO.
Esse foi um exemplo ilustrativo. Em aplicações “de verdade”, seria bastante eficiente, por exemplo, realizar requisições em AJAX para procurar retornos em JSON e, a partir daí, realizar quaisquer tipos de operação com o data retornado. Trataremos disso em artigos futuros. Assine o feed para conferir.
$.getJSON
O jQuery possui uma poderosa ferramenta para trabalharmos com JSON, é a função $.getJSON, que serve para carregar dados no formato JSON usando requisição HTTP GET. Na verdade, esta função é somente uma espécie de atalho para $.ajax() usando “json” no dataType, mas usá-la num contexto JSON fica bastante coerente.
Não há mistério algum para usar, ele segue a mesma “linha” do $.ajax(), como podemos encontrar neste exemplo disponibilizado no próprio site do jQuery:
1 2 3 4 5 6 7 8 9 10 11 12 |
$.getJSON('ajax/test.json', function(data) { var items = []; $.each(data, function(key, val) { items.push('<li id="' + key + '">' + val + '</li>'); }); $('<ul/>', { 'class': 'my-new-list', html: items.join('') }).appendTo('body'); }); |
E, como nos mostra Gabriele Romanato, é possível verificar se o resultado da requisição é realmente um objeto JSON de maneira simples:
1 2 3 4 5 |
$.getJSON(url, function(data)) { if(typeof data !== 'object') { // Erro! } }); |
Dessa maneira, é possível economizar bastante tempo ao procurar erros e a estrutura de código fica mais profissional e mais facilmente manutenível.
JSON e PHP
O PHP também possui algumas funções para se trabalhar com JSON. Vamos a um exemplo simples de como gerar PHP a partir de JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$funcionarios = ' { "Marconildo": { "url": "http://www.marconildo.com.br/", "idade": 34 }, "Joanorta": { "url": "http://www.joanorta.com.br/", "idade": 22 }, "Estripafurgia": { "url": "http://www.estripafurgia.com.br/", "idade": 47 } } '; $funcionario = json_decode($funcionarios); echo $funcionario->Marconildo . '<br />'; echo $funcionario->Marconildo->idade; |
Bem simples, bem direto, dispensa explicações. Agora, se você preferir tratar o JSON como se fosse array, basta inserir um segundo parâmetro à função, dessa maneira:
1 |
$funcionario = json_decode($funcionarios, TRUE); |
Ferramentas JSON
JSON é bastante simples e intuitivo para qualquer programador, mas, para quem está começando a mexer agora e/ou para os que precisam de algumas ferramentas para JSON, segue o link de alguns parser, validadores e ferramentas, em geral, para se trabalhar com JSON:
- Json Parser Online
- JSONLint – The JSON Validator
- Online JSON Viewer
- Convert JSON Strings to a Friendly Readable Format
- JSON Generator
Conclusão sobre JSON
Uma das principais funcionalidades do JSON é o intercâmbio de dados entre aplicativos e linguagens diferentes. Sua sintaxe simples, sua leveza e objetividade, aliados ao suporte por dezenas de linguagens de progrmação o tornam uma excelente alternativa quando a necessidade é esta. O fato de milhares de webservices de qualidade usarem JSON deve ser um bom indicativo de que usá-lo é uma boa escolha.
Usando as ferramentas apresentas, é possível validar seu JSON, testá-lo, verificar se está produzindo uma hierarquia correta, enfim, aperfeiçoar e refinar o código para que atinja o máximo possível de desempenho. Ao se trabalhar com JSON, logo se percebe seu poder e simplicidade, o que agiliza bastante o processo de programação, ao mesmo tempo em que o formato não se torna um empecilho à produtividade; pelo contrário, a aprimora!
Por essas e outras a notação JavaScript Object Notation, mais conhecida como JSON, é altamente recomendada para desenvolvimento web!