+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 (~16 anos atrás)

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

Novo Comentário:

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