Use JSON e PHP no lugar de XML
O que é JSON?
JSON é um sigla para o termo JavaScript Object Notation (Notação de Objetos JavaScript). Como o próprio termo sugere, é uma forma textual para definir objetos usando um caminho diferente do que aprendemos ao estudar JavaScript.Mas não se engane, JSON não é uma nova tecnologia, é apenas um recurso da própria linguagem JavaScript.
Não é pretensão deste artigo explicar detalhadamente as diferenças de objetos tradicionais JavaScript e a notação de objetos usando JSON, mas mostrar sua utilidade como tecnologia para integração com outras aplicações.
Então… Porque o JSON e não XML?
Por ser uma linguagem de notação de objetos JavaScript, JSON não possui apenas a função de transferir dados, mas é possível também transferir objetos com métodos e propriedades do lado servidor para o cliente (navegador de internet), assim como criar objetos dinâmicos para as interfaces de interação com os usuários. As seguintes características contribuíram para que o JSON fosse utilizado como alternativa ao XML:
- Por ser parte da linguagem JavaScript, JSON é completamente entendido e interpretado por todos os navegadores de internet que possuem suporte à JavaScript.
- JSON é mais rápido de escrever, ler e entender que o XML.
- JSON é executado de forma mais rápida que o XML, principalmente em requisições Ajax.
- Um objeto em notação JSON pode ser criado a partir de uma string com um simples comando eval.
- Por tornar-se popular entre os desenvolvedores, muitas outras tecnologias adicionaram suporte ao JSON, como o PHP, Java, C++, Python…
- PHP possui a capacidade de transformar seus arrays em notação JSON e vice-versa, usando as funções json_encode e json_decode.
- Por possuir uma sintaxe semelhante aos arrays, listas, hashmaps, e dicionários em outras linguagens, JSON se tornou uma notação com baixa curva de aprendizado para a maioria dos desenvolvedores, incluindo o programador PHP.
Como o JSON funciona?
Como já mencionei, o JSON entende como objeto tudo que estiver entre {} num formato de nome:valor. O nome é um texto que representa o atributo do objeto e o valor é um valor do tipo existente em JavaScript como: String, Number, Boolean ou null.
Assim, eu posso criar um objeto pessoa com os atributos nome e idade seguindo o padrão mencionado acima. Abaixo segue o código de exemplo:
1
2
3
4
|
var pessoa = {
‘nome’:‘Eduardo Monteiro’,
‘idade’:27
}
|
Para acessar os valores dos atributos do objeto pessoa, basta usar o padrão objeto.atributo. Para modificar e adicionar dados ao atributo, usa-se o mesmo parão. Em JavaScript, isso poderia ser feito assim:
1
2
3
4
5
6
|
var pessoa = {
‘nome’:‘Eduardo Monteiro’,
‘idade’:27
};
alert(pessoa.nome);
|
Outro recurso interessante do JSON são as listas, um array simples onde eu posso armazenar qualquer valor ou tipo de objeto. Toda lista em JSON é adicionada entre [] e cada item da lista está separado por “,”.
1
2
3
4
5
6
7
|
var lista = [
{‘nome’:‘Eduardo Monteiro’, ‘idade’:27},
{‘nome’:‘Suzana Medeiros’, ‘idade’:20},
{‘nome’:‘Mônica de Sousa’, ‘idade’:25}
];
alert(lista[1].nome);
|
Como demonstrado no código acima, temos uma lista de objetos JavaScript em notação JSON com os atributos nome e idade.
E onde entra o PHP?
O PHP entra em ação quando é necessário gerar ou recuperar dados no formato JSON. Quando você precisa gerar uma informação em JSON, o caminho mais simples é criar um array e depois imprimir o resultado da função json_encode, passando o array como parâmetro para a função.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
// Informa o navegador que o conteúdo do arquivo é do tipo JSON
header(‘Content-Type: application/json’);
// Se for usar esse código como exemplo,
// coloque ele num arquivo chamado gera-json.php
$lista = array(
array(‘nome’ => ‘Eduardo Monteiro’, ‘idade’ => 27),
array(‘nome’ => ‘Suzana Medeiros’, ‘idade’ => 20),
array(‘nome’ => ‘Mônica de Sousa’, ‘idade’ => 25),
);
// Imprime o array php em forma de JSON
print json_encode($lista);
?>
|
O código acima imprime um objeto em notação JSON que pode ser lido por uma requisição Ajax ou uma página PHP. Note que antes de imprimir o JSON, indicamos o tipo de conteúdo da página para o navegador de internet do usuário, assim o navegador irá se preparar para o conteúdo JSON que está por vir. Se você fosse escrever um arquivo JavaScript para ler o resultado do código acima, deveria escrever algo assim:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<!DOCTYPE html>
<html>
<head>
<title>Leitor de JSON</title>
<script
src=“http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js”>
</script>
<script>
$(document).ready(function() {
$.getJSON(‘gera-json.php’, function(lista) {
for (index=0; index < lista.length; index++) {
var objeto = lista[index];
alert(‘Nome: ‘ + objeto.nome + ‘ – Idade: ‘ + objeto.idade);
if (console) {
console.log(lista[index])
}
}
});
});
</script>
</head>
<body></body>
</html>
|
Note que usei jQuery para criar o JavaScript de leitura do JSON gerado pelo PHP. Se você não conhece jQuery, sugiro uma estudada no assunto. Um bom lugar para começar é o sitejquery.com.
No caso da linguagem PHP, você poderia escrever um código PHP para ler os objetos JSON degerar-json.php e manipular os objetos. Para isso, você poderia escrever um código como o mostrado abaixo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
// Primeiro lemos o conteúdo da página gera-json.php
$json = file_get_contents(‘gera-json.php’);
// Depois convertemos o JSON para um array em PHP
// O segundo parâmetro com valor true, informa que
// o retorno de json_decode deve ser um array associativo.
$lista = json_decode($json, true);
// Veja como fica o resultado
var_dump($lista);
// Manipulando o resultado como PHP.
foreach($lista as $objeto) {
print “Nome: {$objeto[‘nome’]} – Idade: {$objeto[‘idade’]}”;
}
?>
|
No código acima, usamos a função file_get_contents para ler o conteúdo de gera-json.php e armazená-lo numa variável. Em seguida, transformamos o conteúdo JSON num array associativo da linguagem PHP, com objetivo de tornar a manipulação dos dados mais fácil.
Fonte PHP Mais