Feed Artigos Comentários

Tutorias Hildebrando em 22 Dez 2006

Vale a pena aprender JSON. Entenda porque.

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. (http://www.json.org/).

Devido ao advento de tecnologias como AJAX, a forma como sua tela em HTML deve conversar (via JavaScript) com o servidor teve alguns conceitos alterados. O principal é que apesar de a tarefa de enviar dados para o servidor continuar sendo a mesma, o retorno precisa ser decodificado para identificar os valores que foram retornados. Formas de retorno:

1 - O servidor enviar uma sequencia de valores com um separador, por exemplo :

Rua Joao da Pitangueira|231|Bairro XYZ|São Paulo

Prós :
1 - Quantidade de informação pequena, agilizando o retorno
2 - Facil recuperação dos valores, bastando apenas um split(’|')

Contras :
1 - Manutenção ineficiente ao adicionar ou remover informações devido a perda da identificação dos campos

2 - O servidor envia um XML


<endereco>
<rua>Rua Joao da Pitangueira</rua>
<numero>231</numero>
<bairro>Bairro XYZ</bairro>
<cidade>São Paulo</cidade>
</endereco>

Prós :
1 - Facil identificação de campos/valores navegando no XML.
2 - XML é padrão de mercado no assunto transmissão de mensagens (vide WebServices)

Contra :
1 - Necessita conhecer uma API de parse XML para Javascript.
2 - Gerar o XML de saida de seus objetos/dados do lado do servidor. (conhecer uma biblioteca para isso)
3 - Aumento do tamanho da resposta devido a inclusão das TAGs XML.

3 - O Servidor envia uma resposta JSON

O processo é bem simples. O servidor ao enviar os dados para o cliente gera uma mensagem em formato JSON, decodificando o objeto/dado em questão. Para isso é interessante a utilização de uma biblioteca (http://json-lib.sourceforge.net/usage.html).


class MyBean{
private String name = "json";
private int pojoId = 1;
private char[] options = new char[]{'a','f'};
private String func1 = "function(i){ return this.options[i]; }";
private JSONFunction func2 = new JSONFunction(new String[]{"i"},"return this.options[i];");

// getters & setters
...
}

JSONObject jsonObject = JSONObject.fromObject( new MyBean() );
PrintWriter out = response.getWriter();
out.println( jsonObject );
/* prints
{"name":"json","pojoId":1,"options":["a","f"],
"func1":function(i){ return this.options[i];},
"func2":function(i){ return this.options[i];}}
*/

No lado do cliente é necessário decodificar esta mensagem JSON. Como o JSON é um subset do Javascript existe uma certa facilidade, necessitando apenas entender como é a estrutura do JSON.

var myObject = eval('(' + myJSONtext + ')');

Assim você ja tem a estrutura do seu objeto criado na variavel myObject.

Prós :
1 - Linguagem leve para a representação dos dados.
2 - Facilidade de leitura e escrita (com as bibliotecas).

Contra :
1 - Necessidade de utilizar uma biblioteca no lado do servidor.
2 - Apesar de simples, é uma nova linguagem.

Conclusão

A forma de transmissão de mensagens entre o client e server da sua aplicação deve ser escolhida com muita caltela pois esta pode levar a problemas de performance, ou segurança ou necessidade de recursos de banda. O JSON entra para servir de facilitador pois possue o melhor de dois mundos, tanto a parte lightweight quanto a parte performatica (um parser JSON é muito mais rapido que um XML).

Eu sugiro a leitura tanto do site oficial http://www.json.org, para entendimento da estrutra e particularidades, quanto do artigo http://blogs.msdn.com/mikechampion/archive/2006/12/21/the-json-vs-xml-debate-begins-in-earnest.aspx que debate um comparativo entre JSON e XML.

Enviar por e-mail  | Hits para esta publicação: 806

Link desta publicação | RSS dos Comentários

Deixe uma resposta.