+1

Usando JSON com o PHP

criado por Davis Zanetti Cabral em 04/06/2007 7:33pm
Aqui temos o resultado:

{“id”:9999,“atendente_id”:9999,“tramites”:[1,5,10],“assunto_principal”:“Oi eu sou um chamado teste”}
stdClass
Object
(
   
[id] => 9999
   
[atendente_id] => 9999
   
[tramites] => Array
   
(
       
[0] => 1
       
[1] => 5
       
[2] => 10
   
)
   
[assunto_principal] => Oi eu sou um chamado teste
)
 
Fatal error:  Call to undefined method stdClass::ver() in C:htdocs      este.php on line 33

Note o erro. Esse erro é devido a ele não recuperar métodos do objeto. O ideal, é que quando se recupere um objeto, o mesmo seja criado novamente, e povoado com as propriedades recuperadas. Garantindo assim, a sua integridade.

Abaixo mostro um exemplo disso:

<?php
$chamado
= new Chamado();
// Vamos alterar uns valores das propriedades
$chamado
->id = lala’;
$chamado
->atendente_id = lele’;
$chamado
->tramites = array(1,2,3,4,5,6);
$chamado
->assunto_principal = Mudamos todos os valores!’;
$json
= new Services_JSON();
$json_chamado
= $json->encode($chamado);
unset
($chamado);
 
$chamado
= new Chamado();
$decoded
= $json->decode($json_chamado);
foreach ($decoded as $propriedade => $valor) {
    $chamado
->$propriedade = $valor;
}
print_r
($chamado);
 
// Agora o metodo funciona
$chamado
->ver();
?>

Agora veja o resultado:

Chamado Object
(
   
[id] => lala
   
[atendente_id] => lele
   
[tramites] => Array
   
(
       
[0] => 1
       
[1] => 2
       
[2] => 3
       
[3] => 4
       
[4] => 5
       
[5] => 6
   
)
   
[assunto_principal] => Mudamos todos os valores!
)
[lala]lele - Mudamos todos os valores!


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.)