sexta-feira, 29 de abril de 2011

Ler e escrever JSON com PHP

Logo JSON

Há poucos dias no trabalho, meu chefe me mandou algumas tarefas de programação. Fiquei muito feliz. Como eu disse há algum tempo que não estava programada, porque eu tinha sido atribuído outras tarefas. Tomado em um júnior e enviá-lo para executar tarefas. Então eu nunca vou mudar de juniores   :)

Mas as queixas de lado, eu estou a ponto. Acontece que eu estava contratado para fazer um script PHP que gera um arquivo json para lê-lo de javascript.

JSON

Eu gosto de dizer "jota son", mas as pessoas costumam dizer "yei son". É um formato de representação de dados que encapsula objetos, matrizes ou variáveis ​​em uma notação especial.

JSON JavaScript Object Notation é. E, basicamente, a forma em que os objetos são representados em Javascript. No interior, pode ser de uma única variável, um array de objetos inteiros, etc

JSON vs XML
XML vs JSON

XML é uma outra forma de representação de dados, mas utiliza tags para formatá-lo como HTML. A vantagem do JSON é, basicamente, dois:
  • É mais leve que o XML, porque não adicionar rótulos para adicionar muitos bytes para o conteúdo.
  • Você pode ler quase em JavaScript e que o torna mais rápido. No caso do XML é que o processo mais e que o torna mais lento.
AJAX

Nos últimos anos, o Ajax se tornou moda. Como você se comunica com o servidor em primeiro foi o XML. Mas o JSON estourou a ser aplicada para os benefícios que mencionei anteriormente. Então, muitas comunicações são feitas em ajax json, serviços web agora usam somente este formato.

O que eles me pediram

O que eles me pediram para fazer, basicamente, é um tipo de serviço web.

A partir de uma página web, usando ajax, são solicitados os dados para uma URL (onde hospeda o meu script PHP). Estes dados são utilizados para construir uma tabela, que não é importante neste momento qual é o seu propósito.

No servidor de um arquivo é incluído no meu script php que contém uma variável com os dados. Essa variável é preenchida com os dados do banco de dados em um determinado período de tempo (que eu não estou preocupado comigo, porque já está feito.)

Esta variável é um objeto que contém uma matriz associativa com os valores, tais como:

Equipe do Ajax
$data = array(
  'dato1' => 1,
  'dato2' => 2,
  'dato3' => 3,
  'dato4' => 4,
  'dato5' => 5,
);

Depois de pesquisar na web por um tempo, e que alguns dos meus colegas de trabalho me disse que eu tinha de incluir uma biblioteca para fazer isso, eu achei que ele traz uma função do PHP para fazer este trabalho:
  • json_encode, que retorna um string no formato JSON para a representação do que nós, como um parâmetro.
e é também a sua contrapartida:
  • json_decode  para decodificar o json que passamos como parâmetro e retorna a variável matriz ou objeto que ele representa.
json_encode()

Mas no meu caso eu só precisava json_encode. Então eu tinha que fazer isso:
O elefante PHP

$json = json_encode($data);

e, em seguida, basta imprimir.

echo $json;

e imprime o seguinte:

{"dato1":1,"dato2":2,"dato3":3,"dato4":4,"dato5":5}

Decodificação JSON

Eu não precisava disso, mas se você me enviar o json para obter o equivalente em PHP:

$json = '{"dato1":1,"dato2":2,"dato3":3,"dato4":4,"dato5":5}';
$data = json_decode($json);

E pronto em $ dados, bem como as que tivemos antes. Tão fácil.

De vez em quando você tem que ler o manual do PHP

Este recurso está disponível a partir da versão 5.2. Parece que uma vez utilizada uma biblioteca de objetos JSON, ou foi feito à mão, para os meus colegas que me aconselhou. Mas eu procurei o manual do PHP e encontrei estas funções.

Às vezes você tem que searchat o manual do php. É uma linguagem que está em constante evolução e pode ser que o que tivemos de fazer à mão, agora é fixa em uma única função nativa  :)

Esperemos que ajude alguém   :)

Diego Arregui

Nenhum comentário:

Postar um comentário

Não abuso, por favor! :)

Bloggers - Meet Millions of Bloggers