+1

Usando JSON com o PHP

criado por Davis Zanetti Cabral em 04/06/2007 7:33pm
Comecei a querer saber mais sobre JSON, quando comecei a analisar a comunicação que o Meebo.com fazia enquanto eu conversava com outras pessoas no MSN e GTalk usando ele. Vi que havia um certo padrão na comunicação, algo como o projeto JSON-RPC define:

--> {“method”: postMessage”, params”: [“Hello all!”], id”: 99}
<-- {“result”: 1, error”: null, id”: 99}
<–- {“method”: handleMessage”, params”: [“user1&#8243;, “we were just talking”], “id”: null}
<–- {“method”: handleMessage”, params”: [“user3&#8243;, “sorry, gotta go now, ttyl”], “id”: null}
–-> {“method”: postMessage”, params”: [“I have a question:”], id”: 101}
<-— {“method”: userLeft”, params”: [“user3&#8243;], “id”: null}
<–- {“result”: 1, error”: null, id”: 101}

Note a facilidade de comunicação, criada pelo padrão, entre client e server. JSON, notação do objeto JavaScript, pode ser usado para o intercâmbio de dados leves entre o javascript e outras linguagens.

Desde que o JSON possa ser diretamente executado em JavaScript, é um formato ideal para usar com interfaces Web 2.0; é uma alternativa mais simples do que usar XML para relações com AJAX. Fácil para humanos entenderem e ótimo para máquinas interpretarem.

Abaixo um exemplo de uso do Servico_JSON no php:

<?php
// O cerebro
include
(‘JSON.php’);

// Um classe qualquer, apenas para entender-mos o funcionamento
class Chamado
{
   
// Propriedades
   
public $id;
   
public $atendente_id;
   
public $tramites;
   
public $assunto_principal;

   
// Construtor
   
public function __construct()
   
{
        $this
->id = 9999;
        $this
->atendente_id = 9999;
        $this
->tramites = array(1, 5, 10);
        $this
->assunto_principal = Oi eu sou um chamado teste’;
   
}

   
// Metodo qualquer
   
public function ver()
   
{
        echo
‘[’ . $this->id . ‘]’ . $this->atendente_id . - . $this->assunto_principal;
   
}
}
 
$chamado
= new Chamado();
$json
= new Services_JSON();
// Vai mostrar o codigo em JSON
echo $chamado
= $json->encode($chamado).“\n“;
// Vai recuperar os dados
$chamado2
= $json->decode($chamado);
// Note que o objeto e o padrao
print_r
($chamado2);
// Tentativa de se chamar um metodo recuperado
$chamado2
->ver();
?>

O resultado na proxima pagina.

Comentários:

Mostrando 1 - 2 de 2 comentários
Marcio Muzi disse:
Quando alguém vê uma aplicação minha fazendo um HttpRequest, já vão elogiando o "meu ajax". Aí que explico que uso JSON e não XML, por isso não é Ajax.

Lembrando que a partir do PHP 5.2 o JSON já vem nativo (http://br.php.net/manual/pt_BR/ref.json.php).

Apenas para completar seu exemplo, vou postar aqui como tratar o objeto no Javascript, já que vc falou do eval.

var JSONObject = eval('(' + respostaJSON + ')');

alert( JSONObject.assunto_principal ); // Saída: Oi eu sou um chamado teste
16/10/2007 1:35pm (~17 anos atrás)

funcionou...
12/06/2007 10:58pm (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)