16.3. Objetos JSON

Quando codificamos objetos PHP como JSON, todas as propriedades públicas desse objeto estarão codificadas em um objeto JSON.

Descodificar objetos JSON traz uma ligeria dificuldade, entretanto, desde que os objetos do Javascript correspondam o mais próximo de uma matriz associativa do PHP. Alguns sugerem que um identificador da classe deve ser passado, e um exemplo do objeto dessa classe deve ser criado e populado com os pares chave/valor do objeto JSON; outros pensam que isto poderia gerar um risco substancial da segurança.

Por padrão, Zend_Json irá descodificar objetos JSON como matriz associativas. Entretanto, se você deseja que o retorne um objeto, você pode especificar isto:

<?php
// Descodifique objetos como objetos
$phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
?>

Todos os objetos descodificados assim são retornados como objetos de StdClass com as propriedades que correspondem aos pares chave/valor na notação de JSON.

A recomendação do Zend Framework é que o desenvolvedor deve decidir-se como descodificar objetos JSON. Se um objeto de um tipo especificado for criado, pode ser criado no código do desenvolvedor e ser populado com os valores descodificados usando Zend_Json.