Treinamento Online
Terça-feira, 25 de março de 2008 às 09h00

Iniciando com o JSON - JavaScript Objection Notation

Faltam 0 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

JSON quer dizer JavaScript Objection Notation, e nada mais é do que um conjunto de chaves e valores, que podem ser interpretadas por qualquer linguagem.

Toda essa estrutura, foi criada apartir do padrão ECMA-262, que por sua vez possui convenções muito semelhante às linguagens como C, C#, C++, Java, JavaScript, Perl, Python e várias outras. Com estas características, o JSON se torna o formato ideal para troca de informações independente da linguagem.

Um estrutura JSON pode ser identificada por duas estruturas de dados:

Uma coleção de pares nome/valor. Em várias linguagens, isto é caracterizado como um object, record, struct, dicionário, hash table, keyed list, ou arrays associativas.

Ex:


1.	var MeuBlog = {
2.	nome:"Igor Escobar // blog",
3.	ano:2008,
4.	assunto:"Tecnologia",
5.	getTitle:function(){
6.	return ('TituloBlog:' + nome);
7.	}
8.	} 

Uma lista ordenada de valores. Na maioria das linguagens, isto é caracterizado como uma array, vetor, lista ou sequência.

Ex:


1.	["Igor Escobar // Blog", 2008, 0] 

Viu só? É muito simples trabalhar com o JSON. Não se preocupe ao aplicar estas regras na prática. A teoria é valida para você entender como o JSON gera estes dados, e no seu caso (e de muitos), você precisa decodificar um Array ou um Objecto JSON para a sua linguagem nativa.

Vou utilizar a linguagem PHP, como exemplo, para você entender como funciona e aonde entra o JSON nesta história toda.

  • Inicialmente o PHP recebe os dados e envia-os para o JSON, seja ele um Array ou um Objeto.
  • Logo depois o JSON codifica os dados e retorna este valor (uma inofenciva string) para uma variável PHP, que por sua vez é responsável por enviar esta váriavel para o banco com os dados codificados.

JSON na Prática

Estou disponibilizando aqui o JSON em:

Mas caso você precise da implementação JSON em outras linguagens, basta ir até o site do projeto.

Na prática você só vai utilizar duas funções do JSON:


1.	$JSON = new JSON();
2.	// JSON - Encode
3.	$dbValue = $JSON->encode($objetoPHP); // Codifica um objeto PHP -> JSON 

1.	$JSON = new JSON();
2.	// JSON - Decode
3.	$dbValue = $JSON->decode($dbObject->campoComJson); // Codifica um objeto JSON -> PHP Object 

E é exatamente isso que, no caso do nosso "amigo do e-mail", precisa fazer. Você precisa receber este valor na estrutura de dados JSON e decodificá-lo para que sua linguagem nativa o entenda e interprete.

Possível problema

Se você estiver utilizando JSON -> JavaScript e este array/objeto JSON retornar uma string, é possivel que você tenha problemas com caracteres especiais e, na hora de exibir, apareça alguns caracteres como (+%...etc).

Para corrigir este problema, eu implemento em minhas funções javascript a seguinte solução:

1.	function urlencode(str) {
2.	str = escape(str);
3.	str = str.replace('+', '%2B');
4.	str = str.replace('%20', '+');
5.	str = str.replace('*', '%2A');
6.	str = str.replace('/', '%2F');
7.	str = str.replace('@', '%40');
8.	return str;
9.	}
10.	 
11.	function urldecode(str) {
12.	str = str.replace('+', ' ');
13.	str = unescape(str);
14.	return str;
15.	} 

E é isso caro "amigo do e-mail". Conte-nos depois como foi a sua experiência iniciando com o uso do JSON e espero que este ajude todas as outras pessoas que forem iniciar com o mesmo.

Vale lembrar, eu só escrevi este texto por que o nosso amigo aparentemente precisava MUITO, pela iniciação no novo trabalho e claro o seu problema com certeza bate com o de muitas outras pessoas.

Espero ter contribuído! Abraços!

6 comentários

 André Metzen
26/03/2008 11h51

JSON built-in no PHP

A partir da versão 5.2 do PHP já existem as funções json_encode() e json_decode() nativamente. Muito util e mais eficiente do que bibliotecas externas. ;)

 Igor Escobar
26/03/2008 11h56

Sim, mas..

Sim sim, é bem útil, mais tem casos que queremos fazer adaptações, tem casos e casos, é questão de estratégia.

 Vinicius Alegreti Meza
03/04/2008 17h38

Um problema. Qual a solução?

Olá Igor.
Parabéns pelo seu post. Acredito que este formato será mais amplamente utilizado a partir da apresentação dos conceitos que seu artigo ofereceu. Entretanto, eu tenho algumas dúvidas. Quando se utiliza outros caracteres latinos, como as letras acentuadas, como proceder? Eu procurei utilizar a função htmlentities antes de converter meus resultados com json_encode, mas ao passar para a página html, as entidades html não foram convertidas devidamente. O que foi, por exemplo, á, continuou como á . Você já passou por esta experiência? Como a resolveu? Acredito que muitos colegas gostariam de ter uma explicação para resolver problemas semelhantes. Novamente, parabéns pela explicação da notação.

 Igor Escobar
03/04/2008 18h35

Hun

Muito obrigado pelos elogios Vinicius.

Para resolver este problema, recomendo que converta os caracteres ANTES de condifica-los para notação do JSON.

Você pode usar a função utf8_encode ou a utf8_decode, ambas nativas do PHP.

Grande Abraço.

 Vinicius Alegreti Meza
04/04/2008 08h45

Agora SIM.

Igor,
Corretíssimo. A função funcionou como uma luva. Fiz o teste e me parece que o javascript interpreta adequadamente UTF8. Ou seja, ao converter para este formato, automaticamente a acentuação é levada em conta e tudo funciona como o esperado. Muito obrigado pela dica. Espero ver mais artigos sobre JSON.
Grande abraço.

 Igor Escobar
04/04/2008 09h18

o/

Imagina Vinicios!
Eu é que agradeço a sua participação!

Fique ligado ;)
Se você assinar os feeds do meu blog você lerá este e vários outros artigos que lanço frequentemente.

Abração

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Igor Escobar é CST em Desenvolvimento de Sistemas para Internet pelo Instituto Brasileiro de Tecnologia Avançada. Desenvolvedor Web da Visie - Padrões Web e também escreve em outros veículos como o Web Insider e mantém um blog (blog.igorescobar.com).

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.