Hmm.. Então você ouviu sobre o tal do JSON e não sabe ainda como usar? Talvez você já tenha até visto algo que use JSON e não sabe…

Desde a versão 5.2 o PHP já tem suporte a leitura e escrita de dados no formato JSON… Mas que raios é isso?

Descrição de JSON da Wikipé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.

A simplicidade de JSON tem resultado em seu uso difundido, especialmente como uma alternativa para XML em AJAX. Uma das vantagens reivindicadas de JSON sobre XML como um formato para intercâmbio de dados neste contexto, é o fato de ser muito mais fácil escrever um analisador JSON. Em JavaScript mesmo, JSON pode ser analisado trivialmente usando a função eval(). Isto foi importante para a aceitação de JSON dentro da comunidade AJAX devido a presença deste recurso de JavaScript em todos os navegadores web atuais.

Trocando em miúdos: é um padrão de formatação de dados que serão transmitidos entre duas aplicações de linguagens diferentes. Conhece o XML? Então… O JSON serve pra mesma coisa.

Como ele funciona?

Usando JSON você salvar quatro tipos de valores (variáveis): inteiros, strings, booleanos e arrays. O JSON é um grupo de informações/valores/variáveis agrupados e organizados dentro de um objeto (POO) de JavaScript que pode ser lido – facilmente – pela maioria das linguagens hoje em dia: PHP, ActionScript, ASP, Java, Flex e por aí vai..

A sintaxe do dito cujo

Tá nervoso? Quer ver logo como é esse tal de “djeisón”? Vamos criar um objeto que levaria algumas informações aqui do blog.

Primeiro criamos o objeto sem nada dentro:

var meuBlog = {}

Agora colocamos alguns valores:

var meuBlog = {
titulo: 'Thiago Belem / Blog',
url: 'http://blog.thiagobelem.net/'
}

Caso você queira exibir algum desses valores, usando JavaScript, poderia fazer:

alert("Titulo do blog: " + meuBlog.titulo);

Para incrementar, vamos colocar um array?

var meuBlog = {
titulo: 'Thiago Belem / Blog',
url: 'http://blog.thiagobelem.net/',
assuntos: ['PHP', 'MySQL', 'jQuery', 'CakePHP', 'Desenvolvimento WEB']
}

Lembra que eu disse que você provavelmente já viu JSON em algum lugar? Já usou algum plugin de jQuery e precisou mudar as configurações dele? Dá uma olhada na sintaxe usada lá e vê esses últimos exemplos. Tá… Não é JSON, mas são os dois são idênticos por serem objetos JavaScript… A diferença é que o JSON é feito para ser transmitido. :P

.

Tá… E o PHP nisso?

Bom… Como eu disse antes, o PHP 5.2+ tem suporte nativo a escrita e leitura de formatação JSON… Isso significa que você não precista instalar/ativar nada, é só começar a usar.

Vejamos um exemplo de escrita:

<?php

$meuBlog = array(
'titulo' => 'Thiago Belem / Blog',
'url' => 'http://blog.thiagobelem.net/',
'assuntos' => array('PHP', 'MySQL', 'jQuery', 'CakePHP', 'Desenvolvimento WEB')
);

$json = json_encode($meuBlog);

echo $json;
// Resultado: { titulo: 'Thiago Belem / Blog', url: 'http://blog.thiagobelem.net/', assuntos: ['PHP', 'MySQL', 'jQuery', 'CakePHP', 'Desenvolvimento WEB'] }

?>

É isso mesmo.. Primeiro você cria um array com a formatação correta e todos os valores que serão passados para JSON, depois é só rodar a função json_enconde() no array todo e cabou-se. ;)

Agora a leitura:

<?php

// Recebe uma string no formato JSON
$usuario = "{ nome: 'Fulano da Silva', ativo: true, nascimento: '2009/05/12' }";

$meuUsuario = json_decode($usuario, true);

echo $meuUsuario['nome']; // Fulano da Silva
echo $meuUsuario['nascimento']; // 2009/05/12

?>

No segundo argumento da função json_decode() do PHP você define se quer (true) ou não (false) que o objeto JSON recebido seja convertido em array. Caso não especifique o 2º argumento ou defina-o como falso, o objeto criado será outro objeto, só que agora do PHP.

Webservice? Quem? Como? Quando?

Já dizia a Wikipédia: “Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes.”

Mas perai… O JSON não é usado para formatar os dados que estão sendo compartilhados entre duas aplicações diferentes? Sim! Você acaba de descobrir por que o JSON é ideal para webservices. :)

Espero que tenham gostado desse pequeno artigo.

Ahh.. E pra quem não tem PHP 5.2 ou superior, no site (feio/medonho) do JSON, existem guias de integração e classe pronta para uso (o mesmo vale para outras linguagens que não têm suporte nativo a ele).

Abraços! E uma boa noite.

Quer copiar esse post no seu site? Você pode!

Segundo a licença da Creative Commons você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:

<p>Artigo originalmente publicado em <em>15 de maio de 2009</em> por <strong><a href="http://thiagobelem.net/" title="Thiago Belem, Desenvolvedor PHP">Thiago Belem</a></strong>: <a href="http://blog.thiagobelem.net/introducao-a-json-e-php-webservices/" title="Introdução a JSON e PHP (Webservices)">Introdução a JSON e PHP (Webservices)</a></p>

A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.